我正在使用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()
$_POST['username']
和$_POST['password']
通过另一页的表单发送到此页面$_POST['username']
和$_POST['password']
具有真正的价值。确保您拥有服务器和客户端都知道的域。 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);
?>
并刷新页面两次。