所以我一直在为他们当前网站上的客户开展一个项目,该项目已经存在了很长一段时间。使用的PHP版本是4.4.7,我无法要求他们升级。 (系统很老,可能会破坏一些东西)上周我对我的项目进行了一些更改,一切都工作得很好,页面工作正常。我之前去测试网站,突然间cookie不再起作用。经过2个小时的故障排除后,我终于设置了一个简单的测试页面:
<?php
setcookie('eventCookie','1', time()+7200,'/','.levijackson.net');
echo $_COOKIE['eventCookie'];
?>
我把它放在他们的网站上以及我自己的网站上(我将.levijackson.net更改为相应的域名)
我在两个页面上都刷了两次页面,只有在我的页面上它才会返回cookie。那会是什么导致这样的事情呢?是否有某个设置可能已由其管理员/主持人更改?
我做了测试,HttpOnly cookies仍然有效,所以在我排除故障时我会切换到它们。
编辑:几乎忘了提及,它在FF中工作正常,但在Chrome和IE中它根本不起作用。不确定这是否有用,但我仍然认为它不是浏览器。
感谢
列维
答案 0 :(得分:2)
只是一个猜测 - 可能是他们的服务器已启用auto_prepend_file,并且正在自动添加的文件会向客户端输出内容。一旦任何发送到客户端,set_cookie()
将无效,因为必须在页眉中设置cookie,必须在将任何内容发送到客户端之前发送。
如果不是这样,请尝试区分phpinfo()
转储的“PHP Core”部分,查找可能以某种方式影响此设置的任何其他设置。
修改:如果两个网站都是公开可访问的,那么您可以尝试其他内容。到这里:http://web-sniffer.net/。该站点将显示站点返回的实际HTTP标头。运行两个站点的测试文件,并查看返回的Set-Cookie标头是否有任何差异。