尽管我可以在浏览器中看到,但 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'];
尽管我可以在浏览器中看到,但 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'];
如果您在 localhost 上运行,则应将 cookie 域显式设置为false
.
你可以试试:
setcookie("liu", $result[0]['user_id'], time() + 60 * 60 * 24 * 30, "/", false);
在这里进一步查看:具有显式域的 localhost 上的 Cookies
您无法读取在上述代码中设置的 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 );