【发布时间】:2021-10-22 11:03:48
【问题描述】:
我是 PHP 新手,正在 W3Schools 上参加 PHP 课程。在课程的表单处理部分,我读到有两种处理表单数据的方法:POST 和GET。我知道根据使用的方法,会创建一个超全局变量,将数据存储为键值对。并且在目标页面,从这个变量中检索数据(使用$_POST["key"] 或$_GET["key"])。
但我的问题是:超全局变量($_POST 或 $_GET)存储在哪里?如果它在表单所在的同一页面上,它如何被form 标记的action 属性中指定的另一个目标页面访问?
服务器上的所有页面是否都可以访问同一组这些超全局变量(与我目前认为每个页面都有自己的一组变量相反)?
下面的代码应该让我的问题更清楚:
文件index.php
<html>
<body>
<form action="welcome.php" method="post">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>
</body>
</html>
文件welcome.php
<html>
<body>
Welcome <?php echo $_POST["name"]; ?><br>
Your email address is: <?php echo $_POST["email"]; ?>
</body>
</html>
W3Schools 解释如下:
当用户填写上面的表单并点击提交按钮时,表单数据被发送到一个名为“welcome.php”的 PHP 文件中进行处理。表单数据使用 HTTP POST 方法发送。 要显示提交的数据,您可以简单地回显所有变量。
变量$_POST["name"]和$_POST["email"]如何到达welcome.php?
【问题讨论】:
-
帖子通常来自表单。 Get 通常来自 URL 字符串。这就是我一直认为的......
-
我不这么认为。如果您将某些
_$POST参数发送到一个脚本,例如first.php,相同的_$POST数据不应该暴露给不同的文件(例如second.php),除非它们彼此require'ing 或其他东西 -
$_POST 或 $_GET 数组存储在 RAM 中用于页面请求,因此只有请求调用的页面实例才能访问。
-
POST 存储在页面上,GET 存储在您确定要在表单本身上执行操作的页面链接上。
-
@ag_dhruv 可能是因为在一个页面上收集的 POST/GET 数据可能会反过来重新 POST/GET 到下一页。每个页面都有自己的这些超级全局变量的实例。