1

我有一个应该设置 cookie 的脚本。在网络服务器上,它工作得很好,但是当我在本地测试它时,它没有设置。

摘录:

setcookie('sid', 'nv48thnuf39sonv', 0, '/', $_SERVER['HTTP_HOST']);

echo isset($_COOKIE['sid']) ? $_COOKIE['sid'] : '(empty)';

在调用 之前没有输出setcookie

在服务器上,它表示(empty)第一次加载和nv48thnuf39sonv第二次加载(预期行为)。但是,无论我捣碎多少次http://localhost/,它都会说并且永远不会改变(empty)F5

有谁知道是什么原因导致无法设置 cookie?

4

1 回答 1

0

这是您的 cookie 域。

它至少需要两个点 ( .),否则您的浏览器会认为它无效,因此不会存储 cookie。解决它的最简单方法是简单地将 cookie 域设置为null当您$_SERVER['HTTP_HOST']是 localhost 时:

$cookieDomain = $_SERVER['HTTP_HOST'] == 'localhost' ? null : $_SERVER['HTTP_HOST'];
setcookie('sid', 'nv48thnuf39sonv', 0, '/', $cookieDomain); 
echo isset($_COOKIE['sid']) ? $_COOKIE['sid'] : '(empty)';
于 2013-09-25T22:03:22.570 回答