PHP记得我的Cookie问题吗

PHP记得我的Cookie问题吗,php,cookies,Php,Cookies,我有一个带有“记住我”复选框的登录表单,它在cookie中设置用户电子邮件,然后我希望在用户下次登录时自动填写用户名。另外,当我使用firbug时,它会在login.php页面所在的目录中显示cookie的路径。index.php与login.php目录不在同一目录中 所以我有一个带有登录表单的index.php页面。当用户提交表单时,它调用login.php,该表单包含以下代码: if (isset($_POST['email'])) { if (isset($_POST['r

我有一个带有“记住我”复选框的登录表单,它在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['email']=$userEmail;这应该是$userEmail=$_COOKIE['email'];因为此时$userEmail还没有被赋予值,所以您实际上是将$_COOKIE['email']设置为空值

或者您需要设置$_COOKIE['email']=$_POST['email']

我认为:

ifisset$userEmail:

应该是:

if(isset($userEmail) && !empty($userEmail) ) 

感谢您提供的所有答案,但此更改已解决了此问题。它将cookie的路径设置为login.php页面所在的目录,因此我必须为所有目录设置cookie的路径

我改变了这一点:

if (isset($_POST['email'])) {
    if (isset($_POST['remember'])) {
        setcookie("email", $_POST['email'], time() + 9999999);
        $_COOKIE['email'] = $userEmail;
    }
}
为此:

if (isset($_POST['email'])) {
        if (isset($_POST['remember'])) {
            $userEmail = $_POST['email'];
            setcookie("email", $userEmail, time() + 9999999, "/");
        }
    } 

我在setcookie中添加了/如何停止工作?输入了错误的电子邮件地址?没有电子邮件地址吗?完成了任何基本调试,比如查看cookie是否已设置?设置了什么值?很抱歉,我将更新我的问题,但是是的,它使用登录时输入的用户电子邮件地址设置cookie。我可以看到cookie已设置,但在我回显cookie时,它没有在输入字段中显示电子邮件地址。为什么您有$_cookie['email']=$userEmail;?如果它执行任何操作,它将用一个不存在的变量覆盖您的值。@jeroen:那是因为PHP不会用setcookieah yes中设置的内容自动更新$\u COOKIE。抢手货可能需要一个$userEmail=$\u POST['email']在前面的某个地方。很抱歉,这没有改变任何内容。如果将$\u POST['email']设置为null或空字符串值,$userEmail设置为null或空字符串,则isset函数仅检查相关变量是否在函数调用的范围内定义。如果要检查空字符串。使用空$varSo当我从login.php中删除重定向并在login.php页面中回显cookie时,它回显电子邮件地址,但一旦我进入另一个页面,它就不会回显cookie
if (isset($_POST['email'])) {
        if (isset($_POST['remember'])) {
            $userEmail = $_POST['email'];
            setcookie("email", $userEmail, time() + 9999999, "/");
        }
    }