MSIE 中 $_SERVER['HTTP_REFERER'] PHP 变量的替代方案

发布于 2024-09-27 17:04:35 字数 392 浏览 2 评论 0原文

我在我的应用程序中使用了 $_SERVER['HTTP_REFERER'] 变量(使用 PHP)。 在 Firefox 上,上述变量是有效的。但我发现 $_SERVER['HTTP_REFERER'] 无法在 Microsoft Internet Explorer 8 上运行。 我还知道 HTTP_REFERER 变量在 MSIE8 和 MSIE7 上不起作用。

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

感谢您的建议。

-普拉文。

I have used $_SERVER['HTTP_REFERER'] variable in my application (used PHP).
On Firefox above variables is wokring. But i observed that $_SERVER['HTTP_REFERER'] is not working on Microsoft Internet Explorer 8.
I also got to know that HTTP_REFERER variable doesnt work on MSIE8 and MSIE7.

Please give me your suggestions, how to use $_SERVER['HTTP_REFERER'] variable to get rid on MSIE7/8 or is there any other alternative for $_SERVER['HTTP_REFERER'] variable

Thanks for your suggestion.

-Pravin.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

绅士风度i 2024-10-04 17:04:35

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

// 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';
}

这样,如果用户访问 http://www.example.com/page_1.php,如果他们的浏览器提供了引荐来源网址信息,他们将看到引荐来源网址信息,否则不会看到引荐来源网址。然后,当他们访问 http://www.example.com/page_2.php 以及您网站的任何后续页面时,将可以访问引荐来源网址。

If you only need to use the referrer information internally for your website (ie: between pages of your website, not externally), you can manually keep track of a user's referrer information.

// 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();

Then, to access the referrer, just use the $referrer variable.

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.

苍暮颜 2024-10-04 17:04:35

不要使用会话来猜测引荐来源网址。这将导致不良行为和奇怪的错误。

如果您确实需要知道引用页面,请通过请求参数传递。您可以通过 JS 脚本添加参数,也可以在服务器端添加参数。

页面上所有链接的 jQuery 变体:

$(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;
    });
});

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;
    });
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文