3

尽管我可以在浏览器中看到,但 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'];
4

3 回答 3

6

如果您在 localhost 上运行,则应将 cookie 域显式设置为false.

你可以试试:

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

在这里进一步查看:具有显式域的 localhost 上的 Cookies

于 2013-05-27T19:45:34.860 回答
2

您无法读取在上述代码中设置的 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);

于 2013-05-27T19:40:50.433 回答
0

我们验证我们不在本地工作,如果我们在本地,我们将 false 的值放在变量 $domain 中。如果没有,我们将传递托管 Web 的域。

$domain = ($_SERVER['HTTP_HOST'] != 'localhost') ? $_SERVER['HTTP_HOST'] : false;
setcookie( 'liu', $result[0]['user_id'], time() + 60 * 60 * 24 * 30, '/', $domain );
于 2019-10-21T20:06:35.063 回答