无法在本地主机的php中读取cookie


Unable to read cookie in php on localhost

PHP不读取cookie,虽然我可以在浏览器中看到。

//i set cookie in localhost/site/classes/php/user
setcookie("liu", $result[0]['user_id'], time() + 60 * 60 * 24 * 30, "/");
//trying to access it in localhost/site/index.php
$loggedInUser = $_COOKIE['liu'];

如果您在本地主机上运行,您应该显式地将cookie域设置为false

你可以试试:

setcookie("liu", $result[0]['user_id'], time() + 60 * 60 * 24 * 30, "/", false);

进一步看这里:具有显式域的本地主机上的cookie

您无法读取您在上面代码中设置的cookie。

cookie与报头一起发送到浏览器。

PHP只有在用户导航到下一页或重定向到新页面后才能读取cookie。

PHP将能够读取cookie,因为浏览器将通过报头将其发回。

阅读:http://uk1.php.net/manual/en/function.setcookie.php

常见的陷阱:

cookie在下次加载应该显示cookie的页面时才会显示。要测试是否成功设置了cookie,请在cookie过期前在下一个加载页面上检查该cookie。

过期时间通过Expire参数设置。调试cookie存在的一个好方法是简单地调用 print_r($_COOKIE);

我们验证我们不是在本地工作,如果我们在本地,我们把false的值放在变量$domain中。如果没有,我们将传递web所在的域名。

$domain = ($_SERVER['HTTP_HOST'] != 'localhost') ? $_SERVER['HTTP_HOST'] : false;
setcookie( 'liu', $result[0]['user_id'], time() + 60 * 60 * 24 * 30, '/', $domain );