問題

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

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

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

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

說明

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

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

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

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