[英]PHP cookie set in second refresh page
我想在网页中使用cookie
,我想用它来保存任何可选变量。 但是在使用setcookie
和刷新页面后, isset()
无法检测到,我必须使用很多刷新页面,
我无法在第一次刷新或访问页面时使用它。
PHP:
setcookie("user", "Alex Porter", time()+3600);
if (isset($_COOKIE["user"]))
echo "Welcome " . $_COOKIE["user"] . "!<br>";
else
echo "Welcome guest!<br>";
//unset($_COOKIE['user']);
//setcookie('user', '', time() - 3600);
结果:
保存和刷新页面后
Welcome guest!
第二次刷新:
Welcome Alex Porter
设置cookie时,会将其发送到浏览器。 下次浏览器发送页面请求时,它会发回cookie信息,页面可以使用它。
要修复它,请将用户重定向到设置cookie后要显示数据的页面,而不是简单地显示页面。 这样您就可以使用cookie数据。
嗯,这没有错。 第一次刷新时,实际运行脚本来设置cookie。 所以,它执行else语句。
当您第二次刷新它时, isset()
函数返回true并执行if语句。
这是一个图片描述:
但是,您的脚本存在问题。 每次刷新页面都会将cookie时间更新为3600 seconds
。 因此,只有在用户浏览器上没有设置cookie时才需要设置cookie,如下所示:
if (isset($_COOKIE["user"]))
echo "Welcome " . $_COOKIE["user"] . "!<br>";
else
{
echo "Welcome guest!<br>";
setcookie("user", "Alex Porter", time()+3600);
}
Cookie设置为特定路径和域。 你应该将setcookie()更改为
setcookie ("user", "Alex Porter", time()+3600, "/", "youdomain.com");
如果设置为“/”,则cookie将在整个域(youdomain.com)中可用。
页面刷新后将显示Cookie。
您的代码也可以简化:
echo "Welcome " . isset($_COOKIE["user"]) ? $_COOKIE["user"] : "guest" . "!<br>";
$_COOKIE
数据是从客户端的请求数据中读取的,并不是由setCookie()
立即写入的。 这是正常行为,应该合并到您的程序流程中。
如果您希望cookie数据在您的情况下立即可用,您可以尝试这样的事情:
if (isset($_COOKIE["user"]))
echo "Welcome " . $_COOKIE["user"] . "!<br>";
else {
$user = "Alex Porter";
setcookie("user", $user, time()+3600);
echo "Welcome $user!<br>";
}
我想你想要这样的东西:
if (isset($_COOKIE["user"]))
echo "Welcome " . $_COOKIE["user"] . "!<br>";
else {
echo "Welcome guest!<br>";
setcookie("user", "Alex Porter", time()+3600);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.