我遇到了这个非常短的代码问题,我无法工作。
基本上,我想显示两条不同的消息,具体取决于用户是新用户还是返回用户。
<?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。我不知道出了什么问题,任何人都可以帮助我吗?
答案 0 :(得分:3)
您需要将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/
答案 1 :(得分:0)
我使用上面的代码只显示一次模态窗口。
上面的问题是我试图在索引页的末尾使用它,你只能在设置标题的地方使用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。