某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。
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn