PHP记住我的Cookie问题

时间:2015-01-14 19:29:54

标签: php cookies

我有一个记住我的登录表单复选框,用于在cookie中设置用户电子邮件,然后我想在下次登录时自动填写用户名。另外,当我使用firbug时,它会显示路径login.php页面所在目录中的cookie。 index.phplogin.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

3 个答案:

答案 0 :(得分:0)

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

查看$_COOKIE['email'] = $userEmail;$userEmail = $_COOKIE['email'];,因为此时$userEmail没有给出一个值,所以你基本上将$_COOKIE['email']设置为空值。

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

答案 1 :(得分:0)

我想:

if(isset($userEmail))

应该是:

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

答案 2 :(得分:0)

感谢所有答案,但这一变化解决了这个问题。它将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