PHP+Cookie:只显示一次消息


PHP+Cookies: Show message once only

我对这段非常短的代码有问题,我无法开始工作。

基本上,我想显示两条不同的消息,具体取决于用户是新用户还是返回用户。

<?php 
if(isset($_COOKIE['visit']) && ($_COOKIE['visit'] == "true")) 
{ 
  echo 'cookie set, welcome back';
}else{ 
  echo 'cookie not set, welcome new user';
} 
setcookie("visit", "true", time()+60*60*24*600); 
?>

问题是没有设置cookie。我不知道怎么了,谁能帮我?

您需要将 setcookie 移动到条件中:

<?php 
if(isset($_COOKIE['visit']) && $_COOKIE['visit'] == "true"){
    echo 'cookie set, welcome back';
}else{
    echo 'cookie not set, welcome new user';
    setcookie("visit", "true", time()+60*60*24*600);
}
?>

如果它不起作用,那么您应该检查cookie是否被发送回脚本。 例如,您的浏览器或某些浏览器插件干扰。

请注意,有一项新法律,如果您的服务器位于欧盟,它要求您在计算机上存储或检索任何信息之前获得访问者的知情同意。 http://www.cookielaw.org/

我使用上面的代码使模态窗口只显示一次。

上面的问题是我试图在索引页面的末尾使用它,您只能在设置标题的位置使用 setcookie。

相反,我使用了:

if(isset($_COOKIE['visit']) && $_COOKIE['visit'] == "true"){
    $load = false;
} else {
    $load = true;
    setcookie("visit", "true", time()+60*60*24*600);
}
这将cookie设置

在我的PHP文件的顶部,如果它没有设置,那么我使用

if($load == true){
    //do code on first run
}

在我需要为单次运行添加代码的地方,我在头部使用它来设置一次性使用的 css 样式表,并在页脚中为一次性使用设置一些脚本/html。