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

pra*_*vin 14 php http-referer internet-explorer httprequest internet-explorer-8

$_SERVER['HTTP_REFERER']在我的应用程序中使用了变量(使用PHP).在Firefox上面,变量很重要.但我发现这$_SERVER['HTTP_REFERER']不适用于Microsoft Internet Explorer 8.我也知道HTTP_REFERER变量不适用于MSIE8和MSIE7.

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

谢谢你的建议.

-Pravin.

Ada*_*dam 25

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

// 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();
Run Code Online (Sandbox Code Playgroud)

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

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

这样,如果用户访问http://www.example.com/page_1.php,他们将看到推荐人信息,如果他们的浏览器提供了它,否则没有推荐人.然后,当他们访问http://www.example.com/page_2.php您网站的任何后续网页时,推荐人都可以访问.

  • 非常糟糕的做法.这将在multitab/multiwindow会话和缓存页面中导致奇怪/错误的行为. (2认同)