PHP表单处理

表单是PHP与Web页面交互的方法之一,而表单提交数据有两种请求方式,即为GET请求方式和POST请求方式。
针对表单的两种提交方式。PHP提供了三个全局变量,分别是$_GET 、 $_POST 、$REQUEST,用于获取表单提交的数据。

$_GRT

  1. $变量名 = $_GET["表单元素名"];

$_GRT是一个数组类型变量,用于获得表单GET请求方式提交的数据。
通过URL传参(又叫quert string)传递给当地脚本的变量的数组。
注意:给数组不仅仅对method为GET的请求方式生效,而是会针对query string的请求。

  • 示例

    • index.html文件

      1. <!DOCTYPE html>
      2. <html lang="en">
      3. <head>
      4. <meta charset="UTF-8">
      5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
      6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
      7. <title>Document</title>
      8. </head>
      9. <body>
      10. <!-- HTML 页面中的表单,用来收集数据,并发送给服务器的test.php接口进行处理 -->
      11. <form action="login.php" method="GET">//get请求
      12. <p>姓名: <input type="text" name="username" id="n"></p>
      13. <p>密码: <input type="password" name="passwd" id="p"></p>
      14. <p><input type="submit" value="提交"></p>
      15. </form>
      16. </body>
      17. </html>
    • login.php文件

      <?php
      // 向客户端发送响应头信息
      header("Content-Type:text/html;charset=utf-8");
      // 获取客户端提交的查询参数数据
      $username = $_GET["username"];
      //获得表单提交的 userName 值,userName 是表单元素 name 名称。
      $passwd = $_GET["passwd"];
      //得表单提交的 password 值,password 是表单元素 name 名称。
      echo "登陆成功";
      echo "<br>";
      echo "登陆用户名为:{$username}";
      echo "<br>";
      echo "登陆密码为:{$passwd}";
      ?>
      

      $_POST

      $变量 = $_POST["表单元素名"];
      

      $_POST 用于获得表单 POST 请求方式提交的数据。
      当 HTTP POST 请求的 Content-Type 是 application/x-www-form-urlencoded 或 multipart/form-data 时,会将变量以关联数组形式传入当前脚本。

  • 示例

    • index.html

      <!DOCTYPE html>
      <html lang="en">
      <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      </head>
      <body>
      <!-- HTML 页面中的表单,用来收集数据,并发送给服务器的test.php接口进行处理 -->
      <form action="login.php" method="POST">
         <!-- 在post请求中,也可以在请求地址中添加查询字符串,也可以通过 $_GET 获取,但并不是 Get请求 -->
      <!-- <form action="test.php?test=testestestestest" method="POST"> -->
         <p>姓名: <input type="text" name="username" id="n"></p>
         <p>密码: <input type="password" name="passwd" id="p"></p>
         <p><input type="submit" value="提交"></p>
      </form>
      </body>
      </html>
      
    • login.php

      <?php
      // 向客户端发送响应头信息
      header("Content-Type:text/html;charset=utf-8");
      // 获取客户端提交的查询参数数据
      $username = $_POST["username"];
      $passwd = $_POST["passwd"];
      echo "登陆成功";
      echo "<br>";
      echo "登陆用户名为:{$username}";
      echo "<br>";
      echo "登陆密码为:{$passwd}";
      echo "<br>";
      echo "POST方式提交时,携带的查询参数字符串:{$_GET['test']}"
      ?>
      

      $_REQUEST

      `$变量 = $_REQUEST["表单元素名"];`
      

      $_REQUEST 用于获得表单任何请求方式提交的数据。

  • 示例

    • index.html

      <!DOCTYPE html>
      <html lang="en">
      <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      </head>
      <body>
      <!-- HTML 页面中的表单,用来收集数据,并发送给服务器的test.php接口进行处理 -->
      <!-- GET 方式发起请求 -->
      <!-- <form action="test.php" method="get"> -->
      <!-- POST 方式发起请求 -->
      <!-- <form action="test.php" method="POST"> -->
         <!-- 在post请求中,也可以在请求地址中添加查询字符串,也可以通过 $_GET 获取,但并不是 Get请求 -->
      <form action="login.php?test=testestestestest" method="POST">
         <p>姓名: <input type="text" name="username" id="n"></p>
         <p>密码: <input type="password" name="passwd" id="p"></p>
         <p><input type="submit" value="提交"></p>
      </form>
      </body>
      </html>
      
    • login.php

      <?php
      // 向客户端发送响应头信息
      header("Content-Type:text/html;charset=utf-8");
      // 获取客户端提交的查询参数数据
      $username = $_REQUEST["username"];
      $passwd = $_REQUEST["passwd"];
      echo "登陆成功";
      echo "<br>";
      echo "登陆用户名为:{$username}";
      echo "<br>";
      echo "登陆密码为:{$passwd}";
      echo "<br>";
      echo "POST方式提交时,携带的查询参数字符串:{$_REQUEST['test']}"
      ?>
      

      URL传参

      URL传参也叫问号传参,是php与web页面交互的方法之一
      URL传参,模拟表单GET请求方式,在页面跳转的过程中,铜通通过“?”在URL中添加参数,用于实现跨页面传参的功能

      语法格式

      http://localhost/.xxx.php?参数名=参数值&参数名=参数值...
      
  • 示例

    • check.php ```html <!DOCTYPE html> 跳转页面 // 通过超链接,实现 URL 传参功能。 //check.php:将要跳转到的页面地址。 //?:用于在URL 地址中传递参数。 //id=1:URL 中传递的参数。id 是参数名称,1 是参数值。 //name=Tom:URL 中传递的参数。name 是参数名称,Tom 是参数值。 //age=15:URL 中传递的参数。age 是参数名称,15 是参数值。

   - index.php
```php
<?php
header("content-type:text/html;charset=utf-8");

//获得URL中的参数
$id = $_GET["id"];
$name = $_GET["name"];
$age = $_GET["age"];
//获得 URL 中,参数名称为 id 的参数值。
//获得 URL 中,参数名称为 name 的参数值。
//获得 URL 中,参数名称为 age 的参数值。

//输出接收到的数据
echo "id:{$id}<br/>";
echo "name:{$name}<br/>";
echo "age:{$age}<br/>";