我一直在解决间歇性问题。我正在解决问题,但却是间歇性的,需要一段时间。我找到了一个有效的黑客,我只是不知道为什么而且它在困扰我,也许有人可以发现一个模式并猜测原因:
摘要:这一行并不总是有效:
setcookie('myhash',$aHash,0,MYSUBDIR);
背景:经过一段时间我回到PC后,经常会开始发生这种情况,只需打开Firefox标签并执行AJAX调用,例如添加到购物篮。 (WAMP服务器,localhost,由本地IP 192.x.x.x访问,在其他地方未经测试)。之后,我打开调试输出并可以刷新页面等,但cookie永远不会被设置。包括ajax在内的所有页面都在MYSUBDIR或其子目录中。
需要调试的步骤:我已经非常谨慎地确保了这些页面的安全性。调试输出和所有其他输出发送到缓冲区:我先调用ob_start()
,无论如何,对于AJAX和页面,然后调用ob_end_flush()
。从其他SO问题来看,这似乎是常见的失败。
我发现工作的hacky解决方法是在上面提到的那一行之前添加这一行:
setcookie('myhash',$aHash,time()-1000);
奇怪的是,使用这一行而不是上面的解决方法是行不通的:
setcookie('myhash',$aHash,time()-1000,MYSUBDIR);
关于原因的想法:
MYSUBDIR
常量并不总是设置,所以可能默认使用路径' /'来设置cookie。 - 虽然我有错误报告到E_ALL,详细输出和数据库,并没有看到任何此类错误记录。 var_dump($_COOKIE)
(在ob_start()
之后)并且不要&# 39;看不到cookie密钥有什么问题。有人发现可能导致无法覆盖cookie的原因吗?