PHP / JS - 获取所有重定向的列表

时间:2011-07-08 07:16:49

标签: php javascript http-referer

我正在寻找一种方法来获取用户点击网页上的链接后所有重定向的列表。我想基本上引用用户点击链接时最初显示在地址栏中的内容。问题是,在用户点击链接后,网站会在后台多次重定向用户。

我尝试将引用URL存储在会话变量中,但它只是返回上次访问的重定向。我感兴趣的可能是几层。所以我想生成一个数组来完成。

这是我到目前为止所尝试的内容:

<?php session_start(); if (!isset($_SESSION["origURL"])) $_SESSION["origURL"] = $_SERVER["HTTP_REFERER"]; $redirects = array("1" => $_SESSION["origURL"]); ?>

解决方案应该是PHP或JS或两者的组合。

2 个答案:

答案 0 :(得分:0)

然后在会话中保存数组而不是最后一个URL字符串。

session_start();
if( !isset($_SESSION['redirects']) ) $_SESSION['redirects'] = array();

$_SESSION['redirects'] [] = $_SERVER["HTTP_REFERER"];

然后只需检查您的$_SESSION['redirects']数组。

答案 1 :(得分:0)

hacky javascript解决方案可以是以下

(如果您可以在页面加载上运行代码)

var Beacon = new Image();
Beacon.src = MY_URL.php+'?r='+window.location;

然后在您的服务器端代码中 有一个存储在会话中的数组

$_SESSION['myRedirects'].push( $_GET['r'] );

如果你以后只能插入代码(JS),事情会变得棘手......你必须为大多数点击添加一个监听器,一旦点击它们就会阻止默认动作(preventDefault) - 创建beacon / ajax请求您喜欢的,然后将window.location.href更改为单击的元素href值。

此解决方案可以正常工作 - 但您必须确定哪些链接会产生重定向,而不是在阻止链接默认行为等时可能会停止的javascript函数。