0

我正在尝试使用使用 PHP 存储的 cookie 来确定用户是否已登录。

我正在使用以下内容设置 cookie:

else $keep_alive = time()+(86400 * 14);
setcookie("id",mysql_result($result, 0, "id"),$keep_alive, "/", "mydomain.com");

当我尝试获取 'id' 的值时,我可以使用以下方法检索它,只要我在发送标头之前这样做。

$id = $_COOKIE['id'];

但是,如果页面标题已经发送,则不会检索“id”的值。发送标头后是否无法获取 cookie 的值,还是我遗漏了什么?

4

3 回答 3

1

Cookie 由标头设置/发送。您不能两次发送标头,因此如果您已经发送了标头,则无法在此页面加载时设置 cookie。确保在发送 cookie 之前不打印任何内容,或将其缓冲(ob_start等)

于 2012-05-10T13:42:22.427 回答
0

您可以使用

ob_start() 和 ob_end_flush()

这种方式在调用结束函数之前不会发送标头。

于 2012-05-10T13:43:06.480 回答
0

原来问题是我试图在我的包含文件中获取 cookie 值,该文件仅适用于相对路径。因此,http://www.example.com/directory/page.php必须在我的包含语句中引用为 ./directory/page.php 才能检索 cookie。我不确定这是否是 PHP 的错误,或者他们是否打算让它以这种方式工作,但现在一切都很好。

于 2012-05-11T20:14:48.110 回答