我正在寻找一种方法,一旦用户点击网页上的链接,就可以获得所有重定向的列表。我想引用用户点击链接时地址栏中最初显示的内容。问题是,在用户点击链接后,网站会在后台将用户重定向几次。
我尝试将引用URL存储在会话变量中,但它只是返回最后访问的重定向。我感兴趣的那个可能在后面几层。所以我想生成一个数组来遍历。
这是我到目前为止尝试的:
<?php session_start();
if (!isset($_SESSION["origURL"]))
$_SESSION["origURL"] = $_SERVER["HTTP_REFERER"];
$redirects = array("1" => $_SESSION["origURL"]);
?>
解决方案应该在PHP或JS或两者的组合。
在会话中保存数组而不是最后一个URL字符串。
session_start();
if( !isset($_SESSION['redirects']) ) $_SESSION['redirects'] = array();
$_SESSION['redirects'] [] = $_SERVER["HTTP_REFERER"];
然后检查你的$_SESSION['redirects']
数组
一个简单的javascript解决方案如下
(如果可以在页面加载时运行代码)
var Beacon = new Image();
Beacon.src = MY_URL.php+'?r='+window.location;
,然后在您的服务器端代码在会话
中存储一个数组$_SESSION['myRedirects'].push( $_GET['r'] );
如果你只能稍后插入代码(JS),事情变得棘手…你必须为大多数点击添加一个监听器,一旦它们被点击,防止默认操作(preventDefault)——创建信标/ajax请求,然后将window.location.href更改为被点击元素的href值。
这个解决方案可以工作-但你必须确定哪些链接产生重定向,而不是一个javascript函数,可能会停止当防止链接的默认行为等