未在浏览器中设置Cookie [PHP]

时间:2019-03-04 08:23:16

标签: php cookies login setcookie

我有一些简单的静态登录PHP逻辑,并尝试将用户名保存在cookie中。不幸的是,它不会保存任何内容,也不会返回任何错误,因此我不确定是否出了问题。也许您可以在我做错的代码中发现一些东西。

$users = array('allan'=>'allanpass');

$username = $_POST["username"];
$enterpass = $_POST["password"];

if(isset($_POST["username"])) {
    if (array_key_exists($username, $users)) {
        $pass = $users["allanpass"];
        if($enterpass == $pass) {
            setcookie("heyhey", 'user2', time() + 60 * 60 * 24 * 7, '/');
            echo "Welcome back! <br />";
            echo '<a href="login.php?link=link1">Link1</a><br />';
            echo '<a href="login.php?link=link2">Link2</a><br />';
            echo '<a href="login.php?link=link3">Link3</a><br />';

        } else {
            echo "pass does not exist";
        }
    } else {
        array_push($users, $username);
        echo "hello new user <br />";
        echo '<a href="#">Link1</a><br />';
        echo '<a href="#">Link2</a><br />';
        echo '<a href="#">Link3</a><br />';
    }
} else {
    echo "Please fill in the form";
};

编辑:我以前没有保存过Cookie。一切都被摧毁了。

1 个答案:

答案 0 :(得分:-1)

感谢大家的投入,但问题出在其他方面。就是在我发送标题后设置了一个cookie。现在,这并不意味着我必须在文件顶部设置一个cookie,但是我在文件顶部具有一些注释和空格,并删除这些注释和空格,从而消除了发送错误的标头。如果删除空格不能解决标题错误,请在设置Cookie之前尝试使用ob_start(),在之后设置ob_end_flush();。但这不是最佳实践。

对于定义了变量的未定义索引,我也收到警告。在将值赋给我在if语句中使用的变量之前检查值是否已设置。

$username = isset($_POST['username']) ? $_POST['username'] : '';
$enterpass = isset($_POST['password']) ? $_POST['password'] : '';