PHP GET 和 POST

在本教程中,您将学习如何使用HTTP GET和POST方法将信息发送到服务器,以及如何使用PHP检索信息。

向服务器发送信息的方法

Web浏览器通常使用两种HTTP(超文本传输协议)方法(GET和POST)之一与服务器通信。两种方法都以不同方式传递信息,并且具有不同的优点和缺点,如下所述。

GET方法

在GET方法中,数据作为URL参数发送,通常是由“&”号分隔的名称和值对字符串&。通常,带有GET数据的URL如下所示:

http://www.example.com/action.php?name=john&age=24

URL中的粗体部分是GET参数,而斜体部分是这些参数的值。通过连接与号(&),可以在URL中嵌入多个 参数=值。 只能通过GET方法发送简单的文本数据。

使用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方法中,数据与处理脚本在单独的通信中作为包发送到服务器。通过POST方法发送的数据在URL中不可见。

使用POST方法的优缺点

  • 它比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>

$ _REQUEST 变量

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是内置的,在整个脚本的所有作用域中始终可用。