私はいくつかの "遺産"のコードを調べていて、私があまり理解していないものを見つけました。ここでは、コードは次のとおりです。奇妙なPHPエンコーディングコード。何らかの理由?
$name = $_POST['name'];
$name = htmlspecialchars_decode($name);
$name = addslashes($name);
$name = htmlentities($name, ENT_NOQUOTES, 'UTF-8');
$name = html_entity_decode($name);
InsertIntoDatabase($name); //SQL server
私は個別にすべての単一の行を理解しますが、私の質問は:
なぜプログラマはすべてのことをしましたか?
まず、このコードはすべて役に立たないようです。 htmlentities
とhtml_entity_decode
はお互いを無効にします。htmlspecialchars_decode
は役に立ちません。は'
の前に\
を実際に追加してデータベースにゴミを挿入します。
私はそれをすべて削除するように感じますが、以前の開発者はコードベースのどこにでもその構造を追加するという手間にかかっていました。彼は正当な理由があったに違いない。右?
私たちは(まだ)PHP 5.3を使用しています。なぜ彼はすべてのことをしたのか?
私が推測できるのは、エスケープ文字として\を追加しなければならない他の言語との互換性が欲しいということだけです。 – namlik
コンテキストなしプログラマが何を考えているのか分からない。これが本当に変数をクリーンアップしてデータベースに入れることができるのであれば、それはちょうどゴミです。しかし、もしあなたがこれを削除する必要があれば、あなたのデータベースを通過し、すべてを逆にする必要があります。たぶんそれは人々がそれを修正するために時間とエネルギーを費やしたくないので一人で放置されたのかもしれません。 – apokryfos