-1

私はphpを練習していますが、関数を解釈して危険なSQL文字をエスケープする際に困惑しています。特に2番目のifの$valueがどのように機能するか知りたいです。関数の実際の流れを理解するのは、私にとって静かな不可解です。

function quote_smart($value, $handle) {

   if (get_magic_quotes_gpc()) {
       $value = stripslashes($value);
   }

   if (!is_numeric($value)) {
       $value = "'" . mysql_real_escape_string($value, $handle) . "'";
   }
   return $value;
}
4

2 に答える 2

1

コードが行うことは基本的に次のとおりです。

  • 最初に、サーバーで有効になっている場合にのみ、 magic_quotes_gpcの効果を削除します。これは、magic_quotes がしばらく非推奨になっているため (そして、新しい PHP バージョンでは完全に削除されているため)、そうすべきではありません。

  • 次に、数値以外のすべての値を一重引用符で囲み、値文字列での SQL インジェクションを回避するため$valueに値をエスケープします。mysql_real_escape_string

最近のバージョンの PHP を使用する場合、このメソッドはまったく存在しないはずです。これmagic_quotes_gpcは、有効にするべきではなく、値をエスケープする必要のないクエリを使用PDOまたはパラメータ化するためです。MySQLi

于 2013-07-19T08:21:05.763 に答える