2013-08-31 54 views
2

發送的所有cookie我有下面的PHP代碼:檢測用setcookie函數

setcookie('bonjour', 'bonjour', time() + 3600); 
setcookie('aurevoir', 'aurevoir', time() + 3600); 

print_r(apache_response_headers()); 

print_r($_COOKIE); 

該款顯示器在第一時間:

Array 
(
    [X-Powered-By] => PHP/5.5.0 
    [Set-Cookie] => aurevoir=aurevoir; expires=Sat, 31-Aug-2013 10:27:06 GMT; Max-Age=3600 
) 
Array 
(
) 

和第二:

Array 
(
    [X-Powered-By] => PHP/5.5.0 
    [Set-Cookie] => aurevoir=aurevoir; expires=Sat, 31-Aug-2013 10:26:47 GMT; Max-Age=3600 
) 
Array 
(
    [bonjour] => bonjour 
    [aurevoir] => aurevoir 
) 

問題是,如您所見,只有第二個/最後一個cookie存儲在第一個數組的Set-Cookie中。那麼,我怎樣才能使用headers數組來檢測到兩個cookie被設置?

+2

「Cookie設置完畢後,可以通過$ _COOKIE或$ HTTP_COOKIE_VARS數組加載下一頁。」 – 2013-08-31 09:36:56

+0

是的,我知道,但我無法訪問下一頁,我必須在同一頁上訪問。 –

+0

cookie在瀏覽器端設置,瀏覽器需要告訴php設置了哪些cookie。所以你只能在第二次獲得cookie的細節。 – bansi

回答

2

使用headers_list()函數,就像這樣:

<?php 
setcookie('bonjour', 'bonjour', time() + 5); 
setcookie('aurevoir', 'aurevoir', time() + 5); 


var_dump(headers_list()); 

,輸出:

array (size=3) 
    0 => string 'X-Powered-By: PHP/5.4.12' (length=24) 
    1 => string 'Set-Cookie: bonjour=bonjour; expires=Sat, 31-Aug-2013 09:47:48 GMT' (length=66) 
    2 => string 'Set-Cookie: aurevoir=aurevoir; expires=Sat, 31-Aug-2013 09:47:48 GMT' (length=68) 

Alternativelly你可以建立一個圍繞大約每餅乾SetCookie函數和存儲記錄的包裝設定,但我想先前的解決方案應該足夠好。