ゲーム・論考DB登録時にHTML特殊文字をエスケープして登録してるPHPシステム。コレ久しぶりに喰らった。いうわけで改めて、正しいやり方を書く。HTML特殊文字は表示の直前にhtmlspecialchars!htmlspecialcharsには第2引数でENT_QUOTESをつけろ!(シングルクォートもエスケープ)変数を表示するときは、基本全部htmlspecialchars!「表示の直前」である。htmlspecialcharsをしたら、その後はいっさいの加工をしてはいけない。「あたりまえじゃん」と思った人はずっと忘れないで。エスケープするタイミングはできるだけ一致させないと、あとでわけわからなくなる。「直前」が一番わかりやすい。ENT_QUOTESについては異論もあるらしい。いうのは、「正しいか正しくないか」じゃなくて「できるかできないか」なのだ。ひとりで作ってるなら個別に正しい判断も可能だが、システムは不特定多数が触る。わかりやすく全部つけときゃいい。定数だろうとなんだろうと全部。どれをやってどれをやらないか、判断できる人もいるだろうが、不特定多数の全員ではない。わかりやすく全部、できるだけ同じ方法でエスケープ。それで支障があるのなら、設計が悪い。いまなおさないと、いつか問題が起こる。......なんか、書いててレベル低い話だなあと思うけど。PHPってそういう世界だからさ......。PHPに関してはいつも思うが、間違ったこと書いてるサイトがあまりに多いという問題もある。これに関してはGoogleの罪かも。HTML特殊文字エスケープのやりかたを。