[Web] Cookie 小觀念

分類: 技術分享 作者: jaceju

16 四月 2009

本文轉載自:[Web] Cookie 小觀念

問題

剛剛被問了一個 Cookie 的觀念,這邊簡單分享給大家。

先來看以下這個程式,請問它第一次執行時結果是什麼?

setcookie('test', 'abc');
var_dump($_COOKIE);

如果你回答的是空陣列的話,那就表示你瞭解 Cookie 的作用了。

說明

當我們在使用 setcookie 這個函式時,其實是在告訴瀏覽器: Server 要在它身上註冊一個 cookie 變數,這個變數會在下次瀏覽器連到同一個網站時,被送到 Server 上。

所以第一次我們傾印 $_COOKIE 這個超全域陣列時是抓不到值的 (注意這個動作是在 Server 端) ,因為這時瀏覽器才剛認識 setcookie 丟出來的 test 變數。

當第二次瀏覽同一個網站時,瀏覽器就會把記在自己身上的 cookie 丟回 Server (就像 POST 一樣) ,這時 Server (PHP) 才會知道 cookie 的內容,將它塞到 $_COOKIE 陣列裡。

如果想要第一次執行就取得 $_COOKIE 的值,那麼就得利用 redirect 的方式來處理,如下:

setcookie('test', 'abc');
if (empty($_COOKIE)) header('Location: ./');
var_dump($_COOKIE);

雖然這只是個小觀念,但希望能對大家在使用 Cookie 有進一步的瞭解。

我要留言

關於這裡

這個部落格分享了哇寶在電子商務領域的技術及資訊,希望能讓更多人一起為台灣的網路產業加油。