无法在localhost上读取php中的cookie

时间:2013-05-27 19:12:05

标签: php

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

3 个答案:

答案 0 :(得分:5)

如果您在localhost上运行,则应明确将Cookie域设置为false

你可以尝试:

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

请进一步查看:Cookies on localhost with explicit domain

答案 1 :(得分: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);

答案 2 :(得分:0)

我们验证我们不在本地工作,如果我们在本地工作,则将false值放入变量$ domain中。如果没有,我们将通过托管网站的域名。

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