質問: '' . htmlspecialchars($msg, ENT_QUOTES) . ''; else header('content-type: text/plain; charset=utf-8'); die($msg); } 2If構文に{}は必要ないのでしょうか? 3else以降の文は何を示しているのでしょうか? 4die($msg)は必要なのでしょうか?
回答: ? : 三項演算子です。 ----------- 引用ここから (expr1) ? (expr2) : (expr3) という式は、式1 が true の場合に 式2 を、 式1 が false の場合に 式3 を値とします。 ----------- 引用ここまで 頻出しますので、覚えておきましょう。 提示されたソースは書き出しが = になっていますね(If構文に{}は必要ないのでしょうか? はい。構文は if (式) 文 です。 そのうえで「文を複数書く」ときには、{ } で括って文ブロックを書くこともできます。 >else以降の文は何を示しているのでしょうか? header関数で、content-type指定をブラウザに返しています。何もしないとphpのシステムがcontent-typeを自動的に text/html として返します。 >die($msg)は必要なのでしょうか? この $msg をキチンと出力したいので、headers_send() のチェックをしたりしているんですが・・・ 普通は単に die('error'); で終わらせる(処理を止める)んですが、その場合、メッセージの中にhtmlとして困る内容が混じる可能性もあります。 なので headers_send() が真だったら、すでにcontent-type が text/html になっているので、$msg の内容を(html の記述として問題がないように )htmlspecialchars します。そうでなければ content-type を text/plain として、$msg はそのまま出力しています。 いずれにしても die で止めるのは同じです。本来はエラーログにでも書き出すべきですが、それは本番運用のときだけ xdie の処理を書き替えればいいと思うので・・・