2011-12-24 141 views
0

我收到有关php cookies的问题。我正在使用隐藏框架来构建其他API。

我2个文件涉及

  1. 用户控制器:相同用户控制器,但征求意见
:含有具有用于模型用户
  • CommentController网址方法的类

    class CommentController extends 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设置从同一个控制器饼干和checkCookie检查Cookie是否已设置,即确定,cookie设置

    但是调用这两个功能后,当我打电话从UserController的测试,以检查Cookie是否已设置,cookie不会设置

  • +0

    嗨,有人刚投下了这个问题。我真的没有问题,如果你没有投票它,但至少留言,并告诉我为什么你下了投票,这样下一次我不会犯同样的错误:-) – Noor 2011-12-24 02:52:08

    +0

    在行'if(valid)setCookie(“谁“,$ User-> id);','valid'的值在哪里? – tamilsweet 2011-12-24 02:52:31

    +0

    实际上,有效值是我为清楚起见而放置的一个值,实际上,如果检查凭据,我从数据库中检查 – Noor 2011-12-24 02:53:54

    回答

    3

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

    作为一般规则,当脚本启动时,PHP会用超级全局数据填充超级全局数据,然后在执行会话期间再也不会触及它们。如果你做了任何会影响超全球价值的事情,那么这个新价值将不会出现在相应的超全球范围内,直到下一次运行。

    +0

    在第一个请求中我在commentcontroller中调用setcookie来设置cookie,然后在第二个请求中,我再次发送请求给commentcontroller以检查请求是否已设置,这没问题,但在第三个请求时我发送一个请求到usercontroller,它说cookie没有设置 – Noor 2011-12-24 03:34:59

    1

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

    例:

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

    请尝试。

    Prasad。

    +0

    谢谢回复,当我使用setcookie(“User”,“999882”,time() - 3600,“/”)设置cookie时,它是即使它是针对整个域名仍然无法正常工作,为什么? – Noor 2011-12-24 07:30:49

    相关问题