未使用 PHP setcookie 函数设置 Cookie

Cookies not set using PHP setcookie function

我正在使用 setcookie php 函数在我的浏览器中设置一些 cookie。 我尝试在我的 php 代码中设置 cookie,然后我使用 print_r($_COOKIE) 检查它。 不显示 Cookie,但是如果我尝试在另一个文件中设置 cookie,它们 将正确显示。

if (isset($_POST['username']) && isset($_POST['password']))
{
    global $username,$password;
    $username = $_POST['username'];
    $password = sha1($_POST['password']);
    setcookie('username', $username, time()+3600); //cookie not set
    setcookie('password', $password, time()+3600); //cookie not set
    $database = connect_to_database($db_path);
    $result = $database->query("SELECT * FROM users WHERE username = '$username' AND password = '$password'");
    while (true)
    {
        $response = $result->fetchArray(SQLITE3_ASSOC);
        if (!$response)
        {
            unset($_COOKIE['username']);
            unset($_COOKIE['password']);
            break;
        }
        if (($response['username'] == $username) && $response['password'] == $password)
        {
            header("location: ../index.php");
        }
    }

}

我希望设置 cookie,但使用 print_r($_COOKIE); returns 我 array()

备注

确保您有一个服务器和客户端都知道的域。 echo $_SERVER['HTTP_HOST'] 应该告诉您与您的浏览器拥有的完全相同的域。否则,cookie 将不会被浏览器接受。

确保您的服务器和客户端时间完全正确。浏览器将拒绝日期时间错误的 cookie。

不要编写任何其他代码,只需执行:

<?php
$cookie_name = "user";
$cookie_value = "John Doe";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day 
// expiration
echo date("H:i:s d.m.Y")."<br>";
echo $_SERVER['HTTP_HOST']."<br>";
var_dump($_COOKIE);
?>

并刷新页面两次。

另请查看手册:https://www.php.net/manual/en/features.cookies.php