在第二个刷新页面中设置PHP cookie
我想在网页中使用在第二个刷新页面中设置PHP cookie,php,Php,我想在网页中使用cookie,我想用它来保存任何可选变量。但是在使用setcookie和刷新页面isset()后无法检测到,我必须有很多刷新页面才能使用它 我不能在第一次刷新或访问页面中使用它 PHP: setcookie("user", "Alex Porter", time()+3600); if (isset($_COOKIE["user"])) echo "Welcome " . $_COOKIE["user"] . "!<br>"; else echo "Welco
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 Alex Porter
我猜你想要这样的东西:
if (isset($_COOKIE["user"]))
echo "Welcome " . $_COOKIE["user"] . "!<br>";
else {
echo "Welcome guest!<br>";
setcookie("user", "Alex Porter", time()+3600);
}
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);
}
if(isset($\u COOKIE[“用户”]))
回应“欢迎”$_COOKIE[“用户”]。“!
”;
否则{
回应“欢迎客人!
”;
setcookie(“用户”、“Alex Porter”,time()+3600);
}
Cookie被设置为特定的路径和域。您应该将setcookie()更改为
如果设置为“/”,cookie将在整个域(youdomain.com)中可用
页面刷新后,Cookie将可见。
您的代码也可以简化:
echo "Welcome " . isset($_COOKIE["user"]) ? $_COOKIE["user"] : "guest" . "!<br>";
echo“欢迎”。isset($\u COOKIE[“用户”])$_COOKIE[“用户”]:“来宾”。“!
”;
设置cookie时,会将其发送到浏览器。下一次浏览器发送页面请求时,它会将cookie信息发送回来,页面可以利用它
要解决此问题,请将用户重定向到设置cookie后要在其中显示数据的页面,而不是简单地显示页面。通过这种方式,您可以使用cookie数据。从客户端的请求数据中读取
$\u cookie
数据,而不是由setCookie()立即写入。这是正常的行为,应该纳入您的程序流中
如果希望cookie数据在您的案例中立即可用,可以尝试以下方法:
if (isset($_COOKIE["user"]))
echo "Welcome " . $_COOKIE["user"] . "!<br>";
else {
echo "Welcome guest!<br>";
setcookie("user", "Alex Porter", time()+3600);
}
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);
}
if(isset($\u COOKIE[“用户”]))
回应“欢迎”$_COOKIE[“用户”]。“!
”;
否则{
$user=“Alex Porter”;
setcookie(“用户”,$user,time()+3600);
回显“欢迎$user!
”;
}
好吧,这没什么错。第一次刷新时,实际上是运行脚本来设置cookie。因此,它执行else语句
当您第二次刷新它时,isset()
函数返回true并执行if语句
以下是一个图片说明:
但是,您的脚本有一个问题。每次刷新页面都会将cookie时间更新为3600秒。因此,只有在用户浏览器上没有设置cookie时,才需要设置cookie,如下所示:
if (isset($_COOKIE["user"]))
echo "Welcome " . $_COOKIE["user"] . "!<br>";
else {
echo "Welcome guest!<br>";
setcookie("user", "Alex Porter", time()+3600);
}
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);
}
if(isset($\u COOKIE[“用户”]))
回应“欢迎”$_COOKIE[“用户”]。“!
”;
其他的
{
回应“欢迎客人!
”;
setcookie(“用户”、“Alex Porter”,time()+3600);
}
这就是它的工作原理。cookie是在响应中设置的,并随下一个请求一起发送回。这可能与问题有什么关系?他说cookie不可见,可能是设置正确的cookie路径有问题。请重新阅读问题。OP表示cookie在第一次使用时(即此代码首次执行时)不可用。刷新意味着他访问了站点并刷新了它,或者可能不是OP所说的刷新。我正在使用一些get变量在同一页面上重定向,但我获取的标头已发送错误。“标头已发送错误”是因为您在更改标头之前输出了某些内容(Cookie是标头的一部分)。必须先设置cookie,然后才能从PHP返回任何输出。