【发布时间】:2018-11-17 20:25:27
【问题描述】:
我正在学习在 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
User page after re-opening
我做错了什么,为什么重新打开后的cookies数组是空的?
编辑:
我第二次打开浏览器时,设置 cookie 的脚本没有执行。我只是将 url 设置为转到 user-page.php 。
示例:
/localhost/MIAFormApp/script/db/HTML_PROBA/user-page.html.php
【问题讨论】:
-
我认为这是问题
if (isset($_POST['remember_me'])) {当它为假时,它正在过期。