setcookie()不在本地设置cookie

时间:2013-09-25 22:00:13

标签: php

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

摘录:

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

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

在调用setcookie之前没有输出。

在服务器上,它在第一次加载时显示(empty),在第二次加载时显示nv48thnuf39sonv(预期行为)。然而,通过http://localhost/,它会显示(empty),并且无论我多少时间混合F5

,它都不会发生变化

有谁知道可能导致cookie未被设置的原因?

1 个答案:

答案 0 :(得分:0)

这是你的cookie域名。

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

$cookieDomain = $_SERVER['HTTP_HOST'] == 'localhost' ? null : $_SERVER['HTTP_HOST'];
setcookie('sid', 'nv48thnuf39sonv', 0, '/', $cookieDomain); 
echo isset($_COOKIE['sid']) ? $_COOKIE['sid'] : '(empty)';