天天看點

cookie 的一個坑,自己記錄一下

setcookie(‘name’,'test');
echo $_cookies['name'];
           

請說出程式結果(能說出第一次與第二次的差別者加分)

本來一開始我認為不就是設定一個cookie,然後讀出來的問題,但是被那個後面的提示搞迷惑了從來沒有想過這樣的問題。 面試的時候也沒有想出答案,後來在面試官的指點下搞清楚了。

答案:

第一次為空;

第二次輸出 test.

解釋:cookies是儲存在用戶端的,伺服器要想獲得cookie必須是用戶端通過http的header傳遞給伺服器。

第一次:首先設定一個cookie值,然後讀取cookie值(由于第一次用戶端沒有傳遞cookie給伺服器),沒有cookie值

第二次:cookie值傳遞給了伺服器,就讀出來了

在面試官的指點後,我才想起來了之前有項目的bug與這個有關,但是換個方法避開了。

碰巧這幾天看php手冊看到了setcookie中有這樣一段代碼:

<?php
// set the cookies
setcookie("cookie[three]", "cookiethree");
setcookie("cookie[two]", "cookietwo");
setcookie("cookie[one]", "cookieone");

// after the page reloads, print them out
if (isset($_COOKIE['cookie'])) {
    foreach ($_COOKIE['cookie'] as $name => $value) {
        $name = htmlspecialchars($name);
        $value = htmlspecialchars($value);
        echo "$name : $value <br />\n";
    }
}
?> 
           

亮點

// after the page reloads, print them out => 在頁重新加載後,列印出來

我想這個提示太低調了,我想我們很多人在在調試

在 justjavac 上看到的,我沒看解釋之前,也以為第一次輸出的為 test

是以發表在這,記錄下