PHP の面接の質問から始めましょう
インタビューの質問:
?
?
setcookie(‘name’,'test'); echo $_cookies['name']; 请说出程序结果(能说出第一次与第二次的区别者加分)
?最初はクッキーを設定してそれを読み上げるだけのことかと思っていましたが、後ろのプロンプトに戸惑い、そんな問題は考えもしませんでした。面接中は答えが分からなかったのですが、後で面接官の指導で答えが分かりました。
?
答え:
?
?
1.第一次为空 2.第二次输出 test 解释:cookies是保存在客户端的,服务器要想获得cookie必须是客户端通过http的header传递给服务器。 第一次:首先设置一个cookie值,然后读取cookie值(由于第一次客户端没有传递cookie给服务器),没有cookie值 第二次:cookie值传递给了服务器,就读出来了
面接官の指導を受けて、以前のプロジェクトにこれに関連するバグがあることを思い出しましたが、別の方法で回避しました。
?
最近、たまたま 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
このヒントは控えめすぎると思います。私たちの多くはデバッグ中だと思います
?
?
setcookie(‘name’,'test'); echo $_cookies['name'];
?
最初は値がなかったのですが、その後リフレッシュされて出てきたので問題ないと思ったのですが、原因が分かりませんでした。
?
マニュアルは非常に重要だと言われますが、マニュアルには非常に多くのことが記載されており、マニュアルを読むと必ずこの場所にコードがあることに気づくでしょう。そこで、面接官がどのような状況でこの問題に遭遇したのか興味があったので、面接官に質問したところ、次のような答えが得られました。
?
?
呵呵,认证 应该算 所有web项目的 最开始,也是最重要的一个环节。 所以,对认证这块,需要很熟悉。 这个问题 主要是考 COOKIE 是什么时候被服务端发往浏览器, 浏览器又是什么时候传递给服务器的。
確かに、この観点から始めれば、この問題を見つけることができます。すると面接官も「マニュアルに載っていることしか知らなかった」と言いました。
?
最後に、マニュアルは確かに重要ですが、あまりにも地味すぎるので、マニュアルにそのような地味な問題を見つけたら、それも共有してください。
?
?
?
?
?