我在我的应用程序中使用了$_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。
答案 0 :(得分: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();
然后,要访问引荐来源,只需使用$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
以及您网站的所有后续网页时,系统都可以访问推荐人。
答案 1 :(得分:1)
请不要使用会话来猜测引荐来源。这将导致不良行为和奇怪的错误。
如果您确实需要知道引用页面,请通过请求参数传递它。您可以使用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;
});
});