PHP COOKIE 存入后读取立刻生效的办法小试
由 吉光片羽 在 9 年前
说到KandyDigg顶踩插件有个无限顶踩的BUG,我大概就猜到应该是cookie失效的问题,于是尝试着给没有开启cookie的客户端顶踩时返回“请开启Cookie以获得提交权”的友好提醒防止恶意刷票。当然,如果人家很有空一直不停的开关cookie来刷票,那也真是没有办法了,倘若你的顶踩内容真的需要很真实的顶踩数据,那就还是放过KandyDigg吧,他只能帮你到这了。
话扯远了,回来看看为什么会有这篇文章的诞生:
一开始我直接用变量读取了cookie:
$id=$_COOKIE['id'];
可在严格模式下,这居然会报错!?当然,因为cookie里没有id这个键,自然就报错了,于是乎又改成了:
if(!isset($_COOKIE['id'])) setcookie('id',1,time()+2400,'/'); $id=$_COOKIE['id'];
可$id变量还是为空?难道cookie设置后不是实时更新的?因为再次访问该页面的时候$id得到了正确的值。于是开始奇思妙想了,难不成我要偷偷的刷新一次页面?可事实上,没有比这更简单的办法了,直接赋值:
if(!isset($_COOKIE['id'])) { setcookie('id',1,time()+2400,'/'); $_COOKIE['id']=1; } $id=$_COOKIE['id'];
请问还有更粗暴的方式吗?因为cookie是存在页面头部的信息,所以只有再次再入页面的时候才会从最开始的头部信息获取的cookie。那么,就直接赋值吧,没有比这更有趣的办法了。