我有一个应该设置cookie的脚本。在网络服务器上,它工作正常,但是当我在本地测试它时,它没有设置。
摘录:
setcookie('sid', 'nv48thnuf39sonv', 0, '/', $_SERVER['HTTP_HOST']);
echo isset($_COOKIE['sid']) ? $_COOKIE['sid'] : '(empty)';
在调用setcookie
之前没有输出。
在服务器上,它在第一次加载时显示(empty)
,在第二次加载时显示nv48thnuf39sonv
(预期行为)。然而,通过http://localhost/
,它会显示(empty)
,并且无论我多少时间混合F5
有谁知道可能导致cookie未被设置的原因?
答案 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)';