2011-12-24 82 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