我希望能够在我的PHP中加载前一页的整个URI字符串,例如:
从:/test.php到达的URL ?测试=测试
我知道$_SERVER['HTTP_REFERER']
可以获得test.php
,但如何获得WHOLE url,页面名称以及GET
值?
你不能在PHP中严格做到这一点,你可以在浏览器后台和javascript功能中做到这一点,但这很容易被用户操纵。除此之外,由于安全隐患,$_SERVER['HTTP_REFERER']
值现在只在某些系统上得到支持,而且用户也可以很容易地编辑,因此本质上是不可靠的。
如果你真的需要一个完整的页面历史(即使只有一个页面),你可以做的是将你访问过的网站的页面加载到$_SESSION
变量或数据库中——这是访问不同页面时不会丢失的东西。
所以,在你的页头,你可以设置一个数组的页面,$_SESSION['pages']
和在每个页面你运行,在页面的顶部添加页面值到数组。
:
<?php
session_start();
$_SESSION['pages'][] = $_SERVER['REQUEST_URI'];
//structure: shows folder path, filename and query string
//of the URI used to reach the current page.
要找到访问过的前几页,以及它们的查询字符串(GET变量),您可以这样做:
$reverse = array_reverse($_SESSION['pages']);
$returnURL = $reverse[1];
///previous page address: "/page.php?test=test&goat=yes"
unset($reverse);
这是因为$reverse[0]
将是您当前所在的页面,所以前面的值是$reverse[1]
。
上面的代码有点粗糙,但是纯PHP会给你你想要的,不使用浏览器(缓存)历史或Javascript。