PHP GET 和 POST
在本教程中,你将学习如何使用 HTTP GET 和 POST 方法向服务器发送信息,并使用 PHP 检索它们。
向服务器发送信息的方法
Web 浏览器通常使用两种 HTTP(超文本传输协议)方法之一(GET 和 POST)与服务器通信。两种方法都以不同方式传递信息,并具有不同的优点和缺点,如下所述。
GET 方法
在 GET 方法中,数据作为 URL 参数发送,这些参数通常是由&符号(&
) 分隔的名称和值对的字符串。通常,具有 GET 数据的 URL 将如下所示:
URL 中的粗体部分是 GET 参数,斜体部分是这些参数的值。大于一个的 parameter=value
参数可通过 &
符号级联被嵌入 URL。人们只能通过 GET 方法发送简单的文本数据。
使用 GET 方法的优点和缺点
- 由于 GET 方法发送的数据显示在 URL 中,因此可以使用特定查询字符串值为页面添加书签。
- GET 方法不适合传递用户名和密码等敏感信息,因为这些信息在 URL 查询字符串中完全可见,并且可能作为访问页存储在客户端浏览器的内存中。
- 由于 GET 方法将数据分配给服务器环境变量,因此 URL 的长度是有限的。因此,要发送的总数据存在限制。
PHP 提供了超全局变量 $_GET
来访问通过 URL 发送的所有信息或使用 method="get"
通过 HTML 表单提交信息。
<!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 表单。
<!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
超全局变量的值。
<!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 cookie 和表单处理的更多信息。
注: 超全局变量 $_GET
, $_POST
并且 $_REQUEST
是内置变量,在整个脚本中都是有效的。