虽然我已使用setcookie
设置了Cookie,但为什么在第一次执行/首次访问时会跳到else
部分?
<?php
setcookie("dan", "Sony", time()+60);
if(isset($_COOKIE['dan']))
{
echo "Set";
}
else
{
echo "Not yet!";
}
?>
P.S:我知道这是一个天真的问题,但是我没有找到比StackOverflow更好的论坛。
答案 0 :(得分:2)
setcookie()只是安排PHP脚本发出的HTML标题包含必要的“Set-Cookie:”标题。浏览器通过存储cookie进行响应,然后在下一次请求网站时对其进行反刍。
setcookie()不会在当前正在执行的脚本中设置任何变量,这就是您第一次看不到任何内容的原因。
答案 1 :(得分:0)
您无法在$_COOKIE
的同一请求中获得setcookie
的价值,您可以从下一个请求开始。
当您第一次告诉浏览器设置Cookie时,请求标头中没有Cookie数据(可能来自$_COOKIE
)。
答案 2 :(得分:0)
使用javascript设置Cookie。
function createCookie(name,days,value) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
} else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) { //cookie reader function
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) { //cookie eraser function
createCookie(name,"",-1);
}
createCookie("test", 1, 1);
var mycookie= readCookie("test");
alert(mycookie);