$ _COOKIE [Key]尽管设置了它仍然是空的

时间:2011-12-24 02:42:11

标签: php cookies setcookie

我遇到了关于 php cookies 的问题。我正在使用隐藏框架来构建一个rest API。

我涉及2个文件

  1. 用户控制器:包含具有模型用户URL的方法的类
  2. CommentController :与用户控制器相同,但用于评论
  3. 类CommentController扩展Controller     {

        /** !Route GET, test */
        function test()
        {
            setCookie("Who","userId");
            exit;
        }
    
        /** !Route GET, cookie */
        function checkCookie()
        {
            print_r($_COOKIE);
            exit;
        }
    }
    
    class UserController extends Controller 
    {
    
        /** @var User */
        protected $user;
    
        /** !Route GET, test */
        function test()
        {
          print_r($_COOKIE);
            exit;
        }
    }
    

    如您所见,我有两个文件1.评论控制器2.用户控制器

    我正在从CommentController调用test来设置来自同一控制器的cookie和checkCookie来检查cookie是否已设置,确定cookie已设置

    但在调用这两个函数后,当我从usercontroller调用test来检查cookie是否已设置时,cookie未设置

2 个答案:

答案 0 :(得分:3)

_COOKIE仅填充了脚本启动时客户端发送给服务器的cookie数据。如果在esame脚本执行会话中调用setcookie(),它将 NOT 被修改。您在当前会话期间修改/创建的任何Cookie只会在客户提出的 NEXT 请求中显示在_COOKIE中。

作为一般规则,当脚本启动时,PHP将使用它手头的数据填充超全局,然后在执行会话期间不再触摸它们。如果您做任何会影响超全球价值的事情,那么在下次运行之前,新值不会出现在相应的超全球中。

答案 1 :(得分:1)

我认为问题出在cookie路径上。您最好将cookie用于整个系统。

例如:

setcookie ("User", "999882", time() - 3600, "/public/", "test.com", 1);

请尝试。

普拉萨德。