PHP 基础教程
PHP 高级教程
PHP & MySQL DATABASE
PHP 示例
PHP 参考手册

PHP GETPOST

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

向服务器发送信息的方法

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

GET 方法

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

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

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 是内置变量,在整个脚本的所有范围内始终可用。

Advertisements