使用PHP和jQuery AJAX获取当前页面名称

时间:2014-04-27 10:36:51

标签: php ajax http-referer request-uri

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

在我的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);
    }
});

在我的PHP functions.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.html更改为index.php并仅添加php代码的选项并不是我正在寻找的方法。

3 个答案:

答案 0 :(得分: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'];
}
?>

答案 1 :(得分:0)

您可以在javascript中访问当前页面引荐来源:

document.referrer

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

答案 2 :(得分:0)

推荐人,在支持时,通常是调用相关页面的页面。在您的情况下,functions.php会从index.php(通过AJAX)调用,因此您将引荐来源设为index.php,将自己的网页设为functions.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";
}