1

我想记录网站访问者的引荐来源网址和登录页面。这是基本设置:

在我的index.html文件中,我包含了我的 javascript 文件:<script src="js/log.js"></script>. 从这里我使用 AJAX 调用 PHP 文件来获取引用和登录页面,如下所示:

$.ajax({
    type: "post",
    url: 'php/functions.php',
    data: 'request_type=get_page_info',
    success: function (data) {
                console.log('DATA: '+data);
    }
});

在我的 PHPfunctions.php文件中,我返回引用者和登录页面,如下所示:

if( isset($_POST['request_type']) &&  $_POST['request_type'] == 'get_page_info'){
   echo 'The referer is: '.$_SERVER['HTTP_REFERER'].' and 
         the landing page is: '.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
}

一切都相当简单。假设我从 stackoverflow.com 来到这个站点,我希望 AJAX 成功函数中的数据如下所示:

引用者为:www.stackoverflow.com,登录页面为:www.mysite.com/index.html

但是,相反,我得到了这个:

引荐来源网址是:www.mysite.com/index.html,登陆页面是:www.mysite.com/php/functions.php

我哪里错了?

提前致谢。

更新

我尝试这种方法的原因是因为这个小例子是一个更大的项目的一部分,该项目旨在成为一个插件。为了让用户更容易集成到他们的网站中,我希望他们能够在他们的页面标题中包含 javascript 文件,仅此而已。因此,更改index.htmlindex.php并仅添加 php 代码的选项并不是我真正想要的方法。

4

3 回答 3

0

您正在呼应 ajax 调用本身的引用者,而不是您的登录页面。由于 HTTP 是无状态的,如果不将它们存储在某个地方,就无法通过 Ajax 调用获取这些信息,因此您需要将以下代码放入www.mysite.com/index.html并摆脱 ajax 调用:

<?php
if( isset($_POST['request_type']) &&  $_POST['request_type'] == 'get_page_info'){
   echo 'The referer is: '.$_SERVER['HTTP_REFERER'].' and the landing page is: '.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
}
?>
于 2014-04-27T10:43:04.917 回答
0

您可以在 javascript 中访问当前页面引用:

document.referrer

这是 incase 您没有使用 php 作为您的主页。如果您使用的是 php,则可以在页面加载时捕获它。

于 2014-04-27T10:44:41.917 回答
0

当支持时,引用者通常是调用相关页面的页面。在您的情况下,您functions.php是从(通过 AJAX)调用的index.php,因此您的引荐来源网址index.phpfunctions.php. 从服务器的角度来看,请求的不是一个页面而是两个单独的页面——它对 AJAX 或任何其他请求页面的方法一无所知。

您想要做的根本不需要任何 ajax - 您只需将用于获取引荐来源网址的代码放入您的主index.php文件中。如果(出于任何奇怪的原因)您需要 javascript 中的此信息,您可以从您的 php 文件生成 javascript:

if( isset($_POST['request_type']) &&  $_POST['request_type'] == 'get_page_info'){
    echo "<script type='text/javascript'>\n;
    echo "    var referer = '" . $_SERVER['HTTP_REFERER'] . ";\n";
    echo "    var landing = '" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . ";\n";
    echo "</script>\n";
}
于 2014-04-27T10:48:55.533 回答