如果不在同一页面中,$ GET似乎不起作用

时间:2018-09-21 22:38:29

标签: php html

我目前是php的新手,我试图了解$ GET如何在页面上工作。

因此,在我的第2页中,我的链接中包含以下代码:

href="?reward1=true"

在第1页中,我有这个:

if (isset($_GET['reward1'])) {
    echo '<script type="text/javascript">alert("Test");</script>';
}

如果两个部分都在同一页面中,则有效,但是如果它们在单独的页面中,则无效。为什么?

1 个答案:

答案 0 :(得分:1)

$_GET是一个变量,每次向服务器发出新的HTTP请求时都会重新填充。 “请求”是与您的应用程序进行的任何HTTP交互。如果您下载该页面的html内容,并且在该页面中又发出了3个针对php应用程序的请求(图像,ajax调用,iframe等),则您的php代码中有4个请求。如果您对服务器进行2次AJAX调用,即使它们是从同一客户端上的同一加载文档发出的,仍然是2个单独的请求。

$_GET的值不会携带请求-每次都会重置。例如,如果您访问page2.html?foo=bar,然后单击链接<a href="page1.html?baz=quux">page1</a>,则第二个请求期间的$_GET将与目标链接中的参数匹配,而第一个请求中的参数都不匹配。

如果您的总体目标是在请求之间传递状态,则在生成指向第二页的链接模板时,您将不得不传播查询字符串中的参数(例如reward1),或者跟踪服务器上的参数,例如内部会话变量。

如果第一页是从第二页直接访问过的 ,则可以通过咨询Referer [sic] HTTP标头从上一页提取参数,但是我建议仅作为最后的选择或作为学习练习。引用标头并不总是可靠的,特别是从https到http或涉及重定向时。