【问题标题】:Cookie is not being set in a browser [PHP]未在浏览器中设置 Cookie [PHP]
【发布时间】:2019-07-25 12:39:08
【问题描述】:

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

【问题讨论】:

  • 这就是全部代码吗?上面没有什么?
  • 未定义:$pass = $users["allanpass"];allanpass 是一个值而不是一个键,这应该已经给你一个通知。你有错误吗?
  • @Andreas 是的,它应该是一个值而不是键。我正在检查输入的通行证是否与数组中的通行证匹配。我有错误,我收到警告,但那是另一回事。我回答了我自己的问题,你可以检查一下。

标签: php cookies login setcookie


【解决方案1】:

感谢大家的投入,但问题出在其他地方。那是我在发送标头后设置了一个 cookie。现在这并不意味着我必须在我的文件顶部设置一个 cookie,但我在我的文件顶部有一些 cmets 和空格,并且删除这些摆脱了 headers sent 错误。如果删除空格不能修复标题错误,请尝试在设置 cookie 之前使用 ob_start() 并在之后使用 ob_end_flush();。但这不是最佳做法。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-26
    • 2021-09-30
    • 2023-03-16
    • 1970-01-01
    • 2020-10-07
    • 2019-08-02
    • 1970-01-01
    相关资源
    最近更新 更多