关闭网页后为什么cookie过期了?

时间:2017-01-02 10:30:22

标签: php cookies

当我尝试保存Cookie时,似乎已正确保存,我可以使用$_COOKIE[]获取它们但是当我关闭我的网页并再次打开它时,我无法看到它们。

if(isset($_POST['cookieChk'])){
    setcookie('uName', $_POST['uName'], time() + (3600 * 24 * 30), '/', $_SERVER['SERVER_NAME']);
    setcookie('pass', $_POST['pass'], time() + (3600 * 24 * 1), '/', $_SERVER['SERVER_NAME']);
}else if(!isset($_POST['cookieChk'])){
    setcookie('uName', '', time() - (3600 * 24), '/', $_SERVER['SERVER_NAME']);
    setcookie('pass',  '', time() - (3600 * 24), '/', $_SERVER['SERVER_NAME']);
}

<input type="text" name="uName" class="loginBox" value="<?php if(isset($_COOKIE['uName']))echo $_COOKIE['uName']; ?>" />

2 个答案:

答案 0 :(得分:1)

cookie的默认过期时间是窗口会话,这里的会话是指浏览器窗口,而不是SESSION。

以下是一个示例,请参阅图片中的phpsessid过期时间。 demo

所以当窗口关闭时,cookir会过期。如果您不想这样,请手动设置cookie expiretime。

答案 1 :(得分:1)

你告诉它在你的代码中, 在该代码的每次首次运行时,将执行else if块,从而自行销毁您的cookie

我建议你把它放在其他地方或完全删除

//the root of your problem

setcookie('uName','',time()-(3600*24),'/',$_SERVER['SERVER_NAME']);
setcookie('pass','',time()-(3600*24),'/',$_SERVER['SERVER_NAME']);