在本教程中,您将学习如何使用HTTP GET和POST方法将信息发送到服务器,以及如何使用PHP检索信息。
Web浏览器通常使用两种HTTP(超文本传输协议)方法(GET和POST)之一与服务器通信。两种方法都以不同方式传递信息,并且具有不同的优点和缺点,如下所述。
在GET方法中,数据作为URL参数发送,通常是由“&”号分隔的名称和值对字符串&。通常,带有GET数据的URL如下所示:
http://www.example.com/action.php?name=john&age=24
URL中的粗体部分是GET参数,而斜体部分是这些参数的值。通过连接与号(&),可以在URL中嵌入多个 参数=值。 只能通过GET方法发送简单的文本数据。
由于GET方法发送的数据显示在URL中,因此可以使用特定的查询字符串值对页面添加书签。
GET方法不适用于传递敏感信息,例如用户名和密码,因为这些信息在URL查询字符串中完全可见,并且有可能作为访问页面存储在客户端浏览器的内存中。
因为GET方法将数据分配给服务器环境变量,所以URL的长度受到限制。因此,要发送的总数据存在限制。
PHP提供超级全局变量 $_GET 来访问所有通过URL发送或使用method="GET"方式通过HTML表单提交的信息。
<!DOCTYPE html> <html> <head> <title>在线示例 PHP GET 方法</title> </head> <?php if(isset($_GET["name"])){ echo "<p>Hi, " . $_GET["name"] . "</p>"; } ?> <form method="get" action="<?php echo $_SERVER["PHP_SELF"];?>"> <label for="inputName">Name:</label> <input type="text" name="name" id="inputName"> <input type="submit" value="Submit"> </form>
在POST方法中,数据与处理脚本在单独的通信中作为包发送到服务器。通过POST方法发送的数据在URL中不可见。
它比GET更安全,因为用户输入的信息永远不会在URL查询字符串或服务器日志中可见。
可传递的数据量有更大的限制,并且可以使用POST发送文本数据以及二进制数据(上传文件)。
由于POST方法发送的数据在URL中不可见,因此无法使用特定查询为页面添加书签。
与$_GET类似,PHP提供另一个超全局变量$_POST来访问通过POST方法发送或使用method="POST"通过HTML表单提交的所有信息。
<!DOCTYPE html> <html> <head> <title>在线示例 PHP POST 方法</title> </head> <?php if(isset($_POST["name"])){ echo "<p>Hi, " . $_POST["name"] . "</p>"; } ?> <form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>"> <label for="inputName">Name:</label> <input type="text" name="name" id="inputName"> <input type="submit" value="Submit"> </form>
PHP提供了另一个超全局变量$_REQUEST,该变量包含$_GET和$_POST变量的值以及$_COOKIE超全局变量的值。
<!DOCTYPE html> <html> <head> <title>在线示例 PHP $_REQUEST 变量</title> </head> <?php if(isset($_REQUEST["name"])){ echo "<p>Hi, " . $_REQUEST["name"] . "</p>"; } ?> <form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>"> <label for="inputName">Name:</label> <input type="text" name="name" id="inputName"> <input type="submit" value="Submit"> </form>
您将在高级部分中了解有关PHP cookie和表单处理的更多信息。
注意:超全局变量$_GET,$_POST和$_REQUEST是内置的,在整个脚本的所有作用域中始终可用。