1

当サイトは PHP バージョン 5.2.14 を使用しています

最近、私たちのホストはおそらく魔法の引用符の定義を変更し、提案された解決策を思いつきました[コードベロー]

  1. このソリューションは PHP バージョン 5.2.14 で問題ありませんか?
  2. PHP バージョン 6 にアップグレードする場合、何を変更すればよいですか?
// Code:

function fHandleQuotes($s) {
  if (get_magic_quotes_gpc())
    return ($s);
  return (addslashes($s));
}

. . .
// Usage:

. . . 
$query = "UPDATE myTable SET myField = '" . fHandleQuotes($_POST['fieldName']) . "'";
. . . 
4

2 に答える 2

2

PHP 6 では、magic_quotes は削除されます!
これで、この機能を使用できます。

if(  ( function_exists("get_magic_quotes_gpc") && get_magic_quotes_gpc() ) || ini_get('magic_quotes_sybase')  ){
    foreach($_GET as $k => $v) $_GET[$k] = stripslashes($v);
    foreach($_POST as $k => $v) $_POST[$k] = stripslashes($v);
    foreach($_COOKIE as $k => $v) $_COOKIE[$k] = stripslashes($v);
}
于 2010-11-02T12:30:46.483 に答える
1

これと、魔法の引用符を使用すべきでない理由を読んでください:http:
//php.net/manual/en/security.magicquotes.disabling.php

そのページの例の1つを使用して、に置き換えstripslashesますaddslashes。しかし、はい、あなたのソリューションはおそらく機能します。$_GET = array_map("addslashes", $_GET);ただし、起動時に1回だけ使用する方が高速で、煩わしさが少なくなります。mysql_real_escape_stringその代わりに使用するのがさらに良いでしょうaddslashes。(ただし、これを機能させるには、データベース接続がすでに確立されている必要があります。)

また、これをスパム推奨したいと思います:http ://sourceforge.net/p/php7framework/wiki/input/-アプリケーションを段階的に書き直して$_GET->q["fieldName"]、(それほど安全ではない)魔法の引用符で囲まれたフィールドに使用できるようにするため、または単に$_POST->sql["fieldName"](より安全な)エンコードされたフィールド用。すべての通常のアクセスに対して、デフォルトでフィルターを有効にするために
使用することもできます。一部のアプリケーションではそれはやり過ぎかもしれませんが。$_REQUEST->sql->always()$_REQUEST["fieldName"]

于 2010-11-02T12:29:46.803 に答える