2014-10-07 110 views
1

我試圖弄清楚setset()和$ _COOKIE []與setset()和empty()的關係。但是我在路上遇到了一個障礙。無法在瀏覽器關閉並重新打開後讀取cookie值,在php

這裏是我的test.php

<?php 

//initialize cookie 
$expiry = time()+60*60*9000; 
setcookie('name1', '4', $expiry, '/', '', '', TRUE); 

if (isset ($_COOKIE['name1'])) { 

    echo 'cookievalue ' . $_COOKIE['name1']; 

} else { 

    echo 'cookie value not set'; 

} 


if (!empty ($_COOKIE['name1'])) { 

    echo 'cookievalue ' . $_COOKIE['name1']; 

} else { 

    echo 'cookie value empty'; 

} 

?> 

這裏是我的test1.php

<?php 

if (isset ($_COOKIE['name1'])) { 

    echo 'cookievalue ' . $_COOKIE['name1']; 

} else { 

    echo 'cookie value not set'; 

} 


if (!empty ($_COOKIE['name1'])) { 

    echo 'cookievalue ' . $_COOKIE['name1']; 

} else { 

    echo 'cookie value empty'; 

} 

echo 'cookievalue ' . $_COOKIE['name1']; 


?> 

當我第一次加載test.php的,然後test1.php,一切似乎都工作正常。即,test1.php能夠通過setcookie()讀取在test.php中設置的$ _COOKIE []變量。 (雖然如市場預期,test.php的收到的cookie值在test.php的輸出被刷新一次。)

不過,如果我關閉瀏覽器,然後重新打開它,然後只需運行test1.php ,我在$ _COOKIE ['name1']的name1上收到了「Undefined Index」通知。

爲什麼不能test1.php拿起瀏覽器關閉之前定義的$ _COOKIE變量? Cookie仍應存儲在計算機中。爲什麼不能在關閉並重新打開瀏覽器之後從其中提取cookie值?

+0

您嘗試了其他瀏覽器嗎? – 2014-10-07 22:01:34

+0

php的cookie通常是SESSION cookie,這意味着它們在瀏覽器關閉時會自動刪除。如果你想要一個持久cookie,那麼你必須用'session_set_cookie_params()'正確設置到期時間:http://php.net/manual/en/session.configuration.php#ini.session.cookie-lifetime – 2014-10-07 22:07:07

+0

@MarcB這個設置不會被setcookie()中的'expiry'參數覆蓋。 – 2014-10-07 22:12:40

回答

1

回答我的問題。

感謝@Dagon試用了不同的瀏覽器。它在另一個瀏覽器(Firefox)中工作。它在我的Chrome瀏覽器中無法正常工作(我懷疑我在Chrome上有一些反刪除cookie的功能,就是刪除這個cookie,或者類似的東西)。

-1

你不需要isset()函數它的那樣簡單

if ($_COOKIE['name1']) { 
+0

雖然是真的,但沒有解決問題 – 2014-10-07 22:31:07

+0

我重寫了test1.php而沒有所有你的isset()和空,只是如果($ _ COOKIE ['name1']){它工作正常閱讀設置沒有問題的cookie – 2014-10-07 22:33:55

相關問題