Php setcookie()未在Google Chrome中设置cookie

Php setcookie()未在Google Chrome中设置cookie,php,google-chrome,setcookie,Php,Google Chrome,Setcookie,我正在学习一些关于如何设置cookies的PHP教程。我注意到在FF4和IE9上成功地设置了cookie,但是在Chrome(11.0.696.60)中没有设置cookie。PHP文件由XAMPP(本地主机)提供 我试过W3学校的例子: <?php setcookie("user", "Alex Porter", time()+3600); ?> 和(对于本地主机环境): 提前感谢。禁用IP地址和本地主机的Cookie是一项设计决策。另见: 解决这一问题的方法包括: 设置

我正在学习一些关于如何设置cookies的PHP教程。我注意到在FF4和IE9上成功地设置了cookie,但是在Chrome(11.0.696.60)中没有设置cookie。PHP文件由XAMPP(本地主机)提供

我试过W3学校的例子:

<?php
setcookie("user", "Alex Porter", time()+3600);
?>

和(对于本地主机环境):



提前感谢。

禁用IP地址和本地主机的Cookie是一项设计决策。另见:

解决这一问题的方法包括:

  • 设置本地域(例如,编辑
    /etc/hosts
    以使用
    127.0.0.1 localhost.com
  • 使用(指向127.0.0.1)
  • 设置cookie时使用空域值
例如,在:

此处的值
null
表示不应设置域


注意:不设置域会阻止子域看到cookie。

这可能是Chrome“开发者工具”功能的一个缺陷。整个过程中,我都在尝试设置cookie(但没有检索到cookie),它与另一个浏览器一起工作。假设你信任FF的cookie查看部分,或者找到IE的cookie文件,它就起作用了。在Chrome中,我依赖“开发者工具”(开发者工具>资源>Cookies)的“Cookies”部分

我决定更进一步,使用WHT()中的脚本实际输出cookie的值:


曲奇
它在包括Chrome在内的所有浏览器上都能工作(我得到:“cookie是一个测试”)!然而,Chrome的cookie inspector继续显示“该网站没有cookie”。我还设法找到了存储在Chrome设置中的cookie列表(选项>引擎盖下>内容设置>所有cookie和站点数据),并最终找到了cookie(需要检查的步骤更多,但至少比开发者工具更准确)


结论:Cookie正在设置中,但Chrome的开发工具由于某些原因无法看到它。

您是否检查了系统日期? $date 如果是旧时间,那么你应该改变你的时间 $date-s 2007.04.08-22:46+0000


我希望这有帮助。我也遇到了同样的问题,而且效果很好

当我尝试以下方法时,我遇到了同样的问题

setcookie("gb_role",base64_encode($_SESSION["role"]),time()+60*60*24*30);
当我把它改成下面的时候

setcookie("gb_role",base64_encode($_SESSION["role"]),time()+2592000);

我做的很好,不同的是我做的是time()+一些数值运算,而不是time()+60*60*24*30。我知道这没有道理,但它奏效了

域应等于NULL

&应给出有效期。i、 e

setcookie("username", "George", time() + (20 * 365 * 24 * 60 * 60), "/", NULL);

这个代码在IE、Chrome和FF中为我工作

if($_COOKIE['language']==NULL || empty($_COOKIE['language']))
{


    $dirname = rtrim(dirname($_SERVER['PHP_SELF']), '/').'/';

    $expire=time()+31536000;


    setcookie("language", "English",$expire,"$dirname","mydomain.com",false,false);
}

第一个问题“我试过W3学校的例子”。您最好只检查。您是否在Chrome中启用了Cookie?您是否尝试了缓存刷新(Shift+F5)以确保它不只是引用缓存版本。或者尝试打开“inPrivate”页面(Ctrl+Shift+P)。看看是否得到相同的结果。@alex我刚刚从PHP文档中尝试了示例1(尝试了第1行和第2行setcookie),结果是相同的@tandu Cookie肯定是启用的,Chrome中也没有例外,存储Cookie的网站也在运行@Brad F Jacobs努力刷新并清除缓存以确保安全。注意:在Linux的Chrome上也会发生这种情况。太棒了!非常感谢你。我在IE和Chrome上遇到了麻烦,但在FF、Opera或Safari(在WAMP系统上)上没有。我几乎什么都试过了。顺便说一句,为什么要做出这种有意的设计决定?嗯,这很奇怪。我一直在用Chrome在本地主机上设置cookie,没有任何问题。你确定“bug”不仅仅适用于用JavaScript设置它们吗?这是不可能的。您不能从分配它的同一脚本访问$_COOKIE['test'],除非页面已将其数据发送到浏览器,否则不会分配它$_COOKIE['test']只分配给来自浏览器的每个请求。这也解决了我的问题,但我不明白为什么?我认为为cookies设置一个域是标准的做法。对我来说,这似乎取决于服务器是否能在Chrome中设置cookie域
setcookie("gb_role",base64_encode($_SESSION["role"]),time()+2592000);
setcookie("username", "George", time() + (20 * 365 * 24 * 60 * 60), "/", NULL);
if($_COOKIE['language']==NULL || empty($_COOKIE['language']))
{


    $dirname = rtrim(dirname($_SERVER['PHP_SELF']), '/').'/';

    $expire=time()+31536000;


    setcookie("language", "English",$expire,"$dirname","mydomain.com",false,false);
}