如何获取包含GET变量的前一页URI

时间:2015-10-02 09:03:42

标签: php

我希望能够在我的PHP中加载前一页的整个URI字符串,例如:

  

我的网页到达的网址来自:/ test.php?test = test

我知道$_SERVER['HTTP_REFERER']可以获取test.php但是如何取回 WHOLE 网址,网页名称以及GET值?

1 个答案:

答案 0 :(得分:0)

您无法在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]

上面的代码有点hacky,但纯PHP将为您提供所需的内容,而无需使用浏览器(缓存)历史记录或Javascript。