红红火火恍恍惚惚

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。那么,就直接赋值吧,没有比这更有趣的办法了。

猜你喜欢 Related Posts

各抒己见 Comment

名称

邮箱

主页

爆实惠 爆实惠 2015-11-25 21:47:28 | 回复 坐坐你家杀花0 1