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
是以發表在這,記錄下