没有使用PHP setcookie功能设置Cookies

问题描述 投票:-1回答:1

我正在使用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);返回我array()

笔记

  • 我的浏览器设置允许使用Cookie
  • $_POST['username']$_POST['password']通过另一页的表单发送到此页面
  • $_POST['username']$_POST['password']具有真正的价值。
php cookies setcookie
1个回答
0
投票

确保您拥有服务器和客户端都知道的域。 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

© www.soinside.com 2019 - 2024. All rights reserved.