如果PHP中尚不存在cookie,则无法设置cookie

时间:2011-02-09 02:50:31

标签: php cookies

我正在尝试为网站设置一个cookie,如果它不存在的话。它不起作用。

if(isset($_COOKIE['about'])){
  $_COOKIE['about'] += 1;
}
if(!isset($_COOKIE['about'])){
  setcookie("about", 1, time()+3600);
}

我也试过

if(empty($_COOKIE['about'])){ 
  setcookie("about", 1, time()+3600);
}

3 个答案:

答案 0 :(得分:4)

$_COOKIE超全球只有您可以从中读取值。写入它不会更新cookie,因为这需要将新的Cookie标头发送到浏览器。由cookie支持的sessions可能会更好地服务,因为PHP允许您修改会话而无需显式保存/设置cookie。

答案 1 :(得分:2)

您只能从$_COOKIE超全球读取内容,请尝试正常设置:

setcookie("about",$_COOKIE['about']+1,time()+3600);

所有在一起:

if(isset($_COOKIE['about'])){
   $_COOKIE['about'] += 1;
}else{
   setcookie("about", 1, time()+3600);
}

请注意其他,您之前已检查过Cookie是否已设置,因此无需再次检查是否存在,或者不是。

答案 2 :(得分:1)

请确保您尚未向用户发送任何信息,因为setcookie调用只是header()的别名(但需要遵循特定架构)。您可能已禁用错误输出并且缺少消息,因此它似乎可以正常工作但在后台失败。

setcookie应该是您网页上的第一个电话,其中包括开始会话并设置header