某IP访问站点无法存储SESSION变量,第一次遇到这样怪异的问题。
请先看代码,测试用PHP页面代码如下:
PHP code<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><?php session_start();if(isset($_SESSION["Count"])){$count = $_SESSION["Count"];}else{$count=0;}$count++;echo 'Count:'.$count.'<br/>';echo 'ID:'.session_id();$_SESSION["Count"]=$count;?>
登入後複製
----------------------------------
毋庸置疑,这段代码是绝对正确的,在本地PHP5.2+APACHE主机上测试结果:
------------------
==第一次刷新页面==
Count:1
ID:60499dfb22e443a89f5f8ef161570fb0
==第二次刷新页面==
Count:2
ID:60499dfb22e443a89f5f8ef161570fb0
==第三次刷新页面==
Count:3
ID:60499dfb22e443a89f5f8ef161570fb0
------------------
然而,当我把这段代码存成网页,上传到我在美国买的一个PHP5.2+APACHE空间上后,问题来了!!
用我本地网络访问此页面的测试结果:
------------------
==第一次刷新页面==
Count:1
ID:b8611df96a9371f930d8838c0cbc5d77
==第二次刷新页面==
Count:1
ID:3ae67bfa8cdf1d116e1c763fb8f7e2d8
==第三次刷新页面==
Count:1
ID:e2fc2942aeb87f63ce2253b0e6cc3a4d
------------------
看到上面的结果,我第一反应就是PHP.INI中SESSION设置有问题,结果翻来覆去验证很久,又拿本地PHP.INI文件上传覆盖,结果都一样。
随后清空FF\IE缓存与COOKIE等,还是一样。又换本网另一台电脑访问,结果依然不行。
没办法,这时我只能认为是服务器有问题,随后找服务商解决。服务商托了一天,告诉我服务器并没有问题,他们测试页面时结果是正确的。
这时我很生气,我这边明明测试的结果是错误的,你们那边怎么就可以?还能是我网络问题?我马上挂代理IP软件访问我的网站,结果得到了正确的运行结果!!!随后又用某在线代理IP网站进行访问,结果也是正确的!!
此时我郁闷了!!这是什么情况?按理说国外服务器IP容易被国内ISP服务商封掉,造成国内无法访问的情况。但是,尼玛这是什么情况啊?明明可以访问,就是每次访问都会产生新的SESSION ID,查看SESSION_SAVE_PATH缓存文件夹,还特么的有缓存文件,这是什么什么情况,实在是搞不懂。
请大哥大姐、大侠小虾们帮帮忙吧,实在是崩溃了!!!拜谢!
------解决方案--------------------我访问是好的,就是慢了些。你这哪里的服务器?让你输出phpinfo 信息。还有就是你这么频繁操作session不好,session是服务器端的。
------解决方案--------------------我测试了,你的服务器session是正常的。问题不在服务器 在你自己的网络或者计算机。
------解决方案--------------------已經測試,沒有問題。
------解决方案--------------------与网络是不可能有关系的,难道你的包还能半路让人把COOKIE去掉了?
很明显你浏览器没保存COOKIE,你抓包看看你的请求是不是每次没带COOKIE。