如何获取前一个页面的URI,包括get变量


How to get the previous pages URI including GET variables

我希望能够在我的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。