PHP GET 和 POST
在本教程中,您将学习如何使用 HTTP GET 和 POST 方法向服务器发送信息,并使用 PHP 检索它们。
向服务器发送信息的方法
Web 浏览器通常使用两种 HTTP(超文本传输协议)方法之一与服务器通信—— 获取和发布。 两种方法传递信息的方式不同,并且具有不同的优点和缺点,如下所述。
GET 方法
在 GET 方法中,数据作为 URL 参数发送,这些参数通常是由 & 符号 (&
) 分隔的名称和值对字符串。 通常,带有 GET 数据的 URL 如下所示:
URL 中的粗体部分是 GET 参数,斜体部分是这些参数的值。 通过与 & 符号 (&
) 连接,可以在 URL 中嵌入多个 parameter=value
。 只能通过 GET 方法发送简单的文本数据。
使用 GET 方法的优缺点
- 由于 GET 方法发送的数据显示在 URL 中,因此可以使用特定的查询字符串值为页面添加书签。
- GET 方法不适合传递用户名和密码等敏感信息,因为这些信息在 URL 查询字符串中完全可见,并且可能作为访问页面存储在客户端浏览器的内存中。
- 由于 GET 方法将数据分配给服务器环境变量,因此 URL 的长度是有限的。 因此,要发送的总数据量是有限制的。
PHP 提供了超全局变量 $_GET
来访问通过 URL 发送或使用 method="get"
通过 HTML 表单提交的所有信息。
示例
Download<!DOCTYPE html>
<html lang="en">
<head>
<title>Example of PHP GET method</title>
</head>
<body>
<?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>
</body>
POST 方法
在 POST 方法中,数据在与处理脚本的单独通信中作为一个包发送到服务器。 通过 POST 方法发送的数据在 URL 中不可见。
使用 POST 方法的优缺点
- 它比 GET 更安全,因为用户输入的信息永远不会出现在 URL 查询字符串或服务器日志中。
- 可以传递的数据量有更大的限制,可以使用 POST 发送文本数据和二进制数据(上传文件)。
- 由于 POST 方法发送的数据在 URL 中不可见,因此无法为特定查询的页面添加书签。
与 $_GET
一样,PHP 提供了另一个超全局变量 $_POST
来访问通过 post 方法发送或使用 method="post"
通过 HTML 表单提交的所有信息。
示例
Download<!DOCTYPE html>
<html lang="en">
<head>
<title>Example of PHP POST method</title>
</head>
<body>
<?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>
</body>
$_REQUEST 变量
PHP 提供了另一个超全局变量 $_REQUEST
,它包含 $_GET
和 $_POST
变量的值以及 $_COOKIE
超全局变量的值。
示例
Download<!DOCTYPE html>
<html lang="en">
<head>
<title>Example of PHP $_REQUEST variable</title>
</head>
<body>
<?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>
</body>
您将在高级部分了解更多关于 PHP cookies 和 表单处理 的信息。
注意: 超全局变量 $_GET
, $_POST
和 $_REQUEST
是内置变量,在整个脚本的所有范围内始终可用。