清除IE7的Cookie
我们公司的合作伙伴(affiliate)要求从通过他们的网站进入我们的网站后可以显示他们公司的图标。我们提供的解决方法是这样的:在链接进来的url后加入一个参数,通过这个参数来设置Session变量,然后通过判断Session的存在与否以及Session的值来决定是否显示图片以及显示哪个affiliate的图标。
Page.inc:
//1.先判断URL$img = (isset($_GET['img'])) ?trim(stripslashes(x_site_safe($_GET['img']))) : "";//2. 如果URL上没有img参数,查看SESSION变量if (!$img) $img = (isset($_SESSION['img']))? $_SESSION['img'] : "";//3. 判断affiliate的图标是否存在if (file_exists("/var/www/production/images/ns/img_upl/aff_logo_$img.gif"))$this->aff_img = $img;
Sessioin.inc
//1.判断url的img参数是否存在$this->url['img'] = (isset($_GET['img'])) ?trim(stripslashes($_GET['img'])) : "";//2.如果是新的访问并且URL含义合法的img参数,设置SESSION变量$_SESSION['img']if ($this->do_tracking) {if($this->url['img']) $_SESSION['img'] = $this->url['img'];}
我这里用到if ($this->do_tracking) 目的是只对新访问进行设置SESSION变量。最后根据$this->aff_img存在与否来决定是否在HTML里显示图标。 注意:以上并非完整代码,只是用于示例用。
代码完成了,接下来是在浏览器里测试代码是否正确,首先必须先清浏览器的COOKIE。SESSION变量其实也是一种COOKIE,只是它不是存在客户端的电脑里,而是存放在服务器端。浏览器提供的清空COOKIE的功能同时也可以清除SESSION COOKIE。
在Firefox下,我们使用Web Developer扩展,通过它可以快捷地清除Domain Cookie,然后就可以测试了。测试结果一切正常:如果第一次进入网站并且在URL上加入参数 /?img=1,在整个session内,都可以看到affiliate1的图标。
当时在IE7下,我们碰到了问题。我们使用IE7工具栏里删除选项清空了COOKIE,同样在URL后加入img参数,在第一个页面我们看到了affiliate的图标,但是当点击网页的其他链接进入一个新的页面(URL不在带有img参数),图标就消失了。很明显SESSION变量没有设置正确,按照逻辑,清除COOKIE后,第一次进入网站,如果URL含有img参数,应该要设置SESSION变量的。为什么不行呢?最终的答案是在IE7下清空COOKIE,要重启浏览器才生效!



0 条评论:
发表评论
指向此帖子的链接: