【发布时间】:2015-01-14 19:29:54
【问题描述】:
我有一个带有记住我复选框的登录表单,它将用户电子邮件设置在一个 cookie 中,然后我想在他们下次登录时自动填写用户名。此外,当我使用 firbug 时,它会显示login.php 页面所在目录中的 cookie。 index.php 与login.php 目录不在同一目录中。
所以我有带有登录表单的index.php 页面。当用户提交表单时,它会调用login.php,其中包含以下代码:
if (isset($_POST['email'])) {
if (isset($_POST['remember'])) {
setcookie("email", $_POST['email'], time() + 9999999);
$_COOKIE['email'] = $userEmail;
}
}
然后在index.php 代码上我有这个代码:
$userEmail = $_COOKIE['email'];
然后我使用$userEmail 变量自动填充用户名字段,如下所示:
<div class="form-group <?php if(isset($userEmail)) { echo $addClass; }?>" >
<input type="email" name="email" id="email" class="form-control input-lg" placeholder="Email Address" value="<?php if(isset($userEmail)) { echo $userEmail; } ?>">
</div>
我可以看到正在设置 cookie,但是当我尝试回显 cookie(电子邮件地址)时,它什么也没显示。
我知道我可能没有以最好的方式做到这一点,但它曾经可以工作,现在它停止工作了。关于我做错了什么有什么建议吗?
编辑:当我使用 Firebug 时,我在 Cookies 选项卡中看到了这个:
- 姓名:电子邮件
- 值:电子邮件地址
- 路径:这是与我当前所在页面不同的路径
当我var_dump($_COOKIE['email']) 它显示NULL
【问题讨论】:
-
停止工作如何?输入了错误的电子邮件地址?没有电子邮件地址?完成任何基本调试,例如查看 cookie 是否设置?里面设置了什么值?
-
对不起,我会更新我的问题,但是是的,它使用登录时输入的用户电子邮件地址设置 cookie。我可以看到 cookie 已设置,但它不显示电子邮件当我回显 cookie 时,输入字段中的地址。
-
你为什么有
$_COOKIE['email'] = $userEmail;?如果它做了任何事情,它就会用一个不存在的变量覆盖你的值。 -
@jeroen:那是因为 PHP 不会使用 setcookie() 中设置的任何内容自动更新 $_COOKIE
-
啊是的。接得好。可能需要在更早的地方有一个
$userEmail = $_POST['email']。