繁体   English   中英

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

[英]Cookie is not being set in a browser [PHP]

我有一些简单的静态登录 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。 一切都被摧毁了。

谢谢大家的意见,但问题是别的。 那是我在发送标头后设置了一个 cookie。 现在这并不意味着我必须在我的文件顶部设置一个 cookie,但是我在我的文件顶部有一些注释和空格,删除这些可以消除标题发送错误。 如果删除空格不能修复标题错误,请在设置 cookie 和ob_end_flush();之前尝试使用ob_start() ob_end_flush(); 后。 但这不是最佳实践。

我还收到了未定义索引的警告,其中我定义了变量。 在将值分配给我在 if 语句中使用的变量之前检查是否设置了值也有帮助。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM