【问题标题】:setcookie php very slow or what happened?setcookie php 很慢还是怎么回事?
【发布时间】:2015-06-24 10:31:40
【问题描述】:

这是一个小测试。我设置了一个 cookie,然后尝试访问它:

<?php 
setcookie("t",0,time()+900);    
echo ($_COOKIE['t']+10);
setcookie("t",0,time()-3600);   
?>

当我运行代码时,我收到如下错误消息:

Notice: Undefined index: t in /var/www/x/testcookie.php on line 5
10

为什么我无法访问 cookie?

【问题讨论】:

    标签: php cookies localhost session-cookies


    【解决方案1】:

    这样不行。 setcookie 只是说“下一个 http 连接告诉客户端(浏览器)设置这个 cookie。如果它还没有过期,浏览器会在下一个 http 连接中将它发回。只有这样它才包含在 $_COOKIE 数组中。所以你可以在下一页重新加载后检查它是否在 PHP 中设置。

    除了在您的代码中不会设置第二个 cookie,因为您向浏览器输出了在 setcookie 函数(任何标头函数)之前被禁止的内容。

    setcookie() 定义了一个 cookie 与其余的 HTTP 标头一起发送。与其他标头一样,cookie 必须在脚本的任何输出之前发送(这是协议限制)。这要求您在任何输出之前调用此函数,包括和标记以及任何空格。

    一旦设置了 cookie,就可以在下一页访问它们 用 $_COOKIE 加载

    【讨论】:

      【解决方案2】:

      您需要了解 cookie 的工作原理。使用 setcookie 您将标头发送到浏览器,它告诉浏览器存储 cookie。并且 $_COOKIE 超全局包含来自用户请求标头的 cookie。所以这意味着您使用 setcookie 设置的变量在刷新后仅在 $_COOKIE 数组中可用,当它返回用户请求标头时。请记住,您只能在任何输出之前设置标题,因此第二个 setcookie 将不起作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-22
        • 1970-01-01
        • 2011-07-21
        • 1970-01-01
        • 1970-01-01
        • 2016-07-16
        • 2014-04-01
        • 2017-10-20
        相关资源
        最近更新 更多