为什么在关闭Chrome

时间:2018-06-07 20:05:34

标签: php cookies setcookie

我正在学习在PHP中使用cookie。我期待每次设置cookie时,cookie和所有变量都存储在客户端站点上,以便下次用户访问该站点时再次使用它们。无论如何在下一个例子中(带有登录选项的web应用程序,我使用cookie来存储一个唯一的字符串,这样我就可以实现“记住我”选项)我可以访问存储的cookie的id,但变量数据似乎丢失了。这是我使用的代码示例和我得到的截图。

设置Cookie

 if (isset($_POST['remember_me'])) {
    $token=uniqid($_SESSION['id']);
    $sql="UPDATE users SET token='$token' WHERE id='".$_SESSION['id']."'";
    $conn->query($sql);   
    setcookie("remember_me", $token, time()+30*24*60*60*1000);
}
else{
    setcookie("remember_me","",time()-1000);
} 

用户页面

在用户页面上,它只是打印出$ _COOKIE和$ _SESSION数组。

<?php 
    echo "SESSION: ";
    print_r($_SESSION);
?>
<br>
<?php
    echo "COOKIE: ";
    print_r($_COOKIE);
?>

过程:

  • 首先,我使用我在此处找到的建议删除所有Cookie: how to delete all cookies of my website in php
  • 然后登录到内部Log in screen
    (此表单调用一个脚本执行代码,用于设置我在开头提供的cookie,然后重定向到用户页面)
    User page before closing
  • 关闭浏览器并直接在用户页面再次打开它(不执行其他脚本)/localhost/MIAFormApp/script/db/HTML_PROBA/user-page.html.php
    {{3 }}

我出了什么问题以及为什么重新开放后的Cookie数组是空的?

编辑:

第二次打开浏览器时,不会执行用于设置cookie的脚本。我只是将url设置为user-page.php。
示例: /lhosthost/MIAFormApp/script/db/HTML_PROBA/user-page.html.php

1 个答案:

答案 0 :(得分:0)

尝试删除示例代码中的else语句 - 意思是来自:

:此

if (isset($_POST['remember_me'])) {
    $token=uniqid($_SESSION['id']);
    $sql="UPDATE users SET token='$token' WHERE id='".$_SESSION['id']."'";
    $conn->query($sql);   
    setcookie("remember_me", $token, time()+30*24*60*60*1000);
}
else{
    setcookie("remember_me","",time()-1000);
} 

到此

if (isset($_POST['remember_me'])) {
    $token=uniqid($_SESSION['id']);
    $sql="UPDATE users SET token='$token' WHERE id='".$_SESSION['id']."'";
    $conn->query($sql);   
    setcookie("remember_me", $token, time()+30*24*60*60*1000);
}

当您重新打开浏览器时,if语句将检查是否找到POST变量 remember_me 。唯一可以找到的是当有人登录时,因为登录表单正在表单提交上发送该信息。在每个其他实例中(例如重新打开浏览器),将执行else语句,这不是您想要的。原因是在cookie上设置空值将delete said cookie.