14

$_SERVER['HTTP_REFERER']在我的应用程序中使用了变量(使用 PHP)。在 Firefox 上,上面的变量是 wokring。但我观察到这$_SERVER['HTTP_REFERER']在 Microsoft Internet Explorer 8 上不起作用。我还知道该HTTP_REFERER变量在 MSIE8 和 MSIE7 上不起作用。

请给我您的建议,如何使用$_SERVER['HTTP_REFERER']变量来摆脱 MSIE7/8 或者是否有任何其他替代$_SERVER['HTTP_REFERER']变量

谢谢你的建议。

-普拉文。

4

2 回答 2

27

如果您只需要在您的网站内部使用引荐来源信息(即:在您网站的页面之间,而不是外部),您可以手动跟踪用户的引荐来源信息。

// Get the full URL of the current page
function current_page_url(){
    $page_url   = 'http';
    if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on'){
        $page_url .= 's';
    }
    return $page_url.'://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
}

/* (Assuming session already started) */
if(isset($_SESSION['referrer'])){
    // Get existing referrer
    $referrer   = $_SESSION['referrer'];

} elseif(isset($_SERVER['HTTP_REFERER'])){
    // Use given referrer
    $referrer   = $_SERVER['HTTP_REFERER'];

} else {
    // No referrer
}

// Save current page as next page's referrer
$_SESSION['referrer']   = current_page_url();

然后,要访问引用者,只需使用$referrer变量。

if(isset($referrer)){
    echo 'Referred from "'.$referrer.'"';
    echo '<a href="'.$referrer.'">Back</a>';
} else {
    echo 'No referrer';
}

That way, if a user visits http://www.example.com/page_1.php, they will see the referrer information if their browser has provided it, otherwise no referrer. Then when they visit http://www.example.com/page_2.php, and any subsequent pages of your site, the referrer will be accessible.

于 2011-02-22T01:41:26.307 回答
1

Please don't use session to guess the referrer. This will lead to undesired behaviour and strange errors.

If you really need to know the referring page, pass it via request parameter. You can add the parameter with JS script or on the server side.

jQuery variant for all links on the page:

$(document).ready(function(){
    $('a').on('click', function(e) {
        url = this.getAttribute('href');
        // Check if the page is internal.
        if (url.charAt(0) != '/') {
            return;
        }
        e.preventDefault();
        // Append referrer.
        url += url.indexOf('?') === -1 ? '?' : '&';
        url += 'referer=' + encodeURIComponent(document.URL);
        window.location = url;
    });
});
于 2016-02-13T22:21:52.057 回答