网站开发日志

2008年12月8日星期一

分享家:Addthis中国

HTTP_REFERER在IE7下不工作

一般情况下在PHP里,我们可以通过HTTP_REFERER环境变量获得用户是从那个网页进入当前页面的(也有人称之为“来路”),使用方法为:

<?php
echo getenv("HTTP_REFERER");
//OR
echo $ENV{'HTTP_REFERER'};
?>

但是,HTTP_REFERER并不是万无一失的,因为有些浏览器在进入新页面时并不会送出这个变量。这几天公司的网站在增加在线咨询功能,为了更好回答用户碰到的问题,我们想知道用户是从那个页面进入在线咨询上的。当用户点击页面上的在线咨询按钮后会打开一个用户信息表单,这一步我用到HTTP_REFERFER把用户来路网址写入在表单,做为一个隐含值;当用户填好相关信息提交表单后这个隐含值被送给聊天引擎,这样客服人员就可以知道用户是从哪里进入在线咨询了。这种方法在Firefox下工作的很好,但是这IE7下却不工作。没办法,只好改用Javascript在用户点击按钮时,把来路网址作为一个参数传递给PHP文件。具体代码如下,

HTML/Javascript代码:

<a href="#" onClick="window.open(\'/chat/chat.php?di=24395&ref='+location.href+'\',\'custclient\',\'width=500,height=470,scrollbars=0\');return false;">
  <img src="images/livechattile_on_rtnav.gif" border="0">
</a>

注意:在调用chat.php时,当前网址location.href被当成一个参数。另外值得一提的是单引号内javascript变量的写法,必须使用 '+location.href+' ,而不是直接插入location.href

PHP代码:

//$ref = getenv("HTTP_REFERER");
//getenv在IE7下行不通,所以改用$_GET
$ref = ($_GET['ref'])? $_GET['ref'] : "";

标签: ,

相关文章:

0 条评论:

发表评论

指向此帖子的链接: