0

いくつかのフィールドをデータベースに入力しています。1つの値は

foto's

$_POST[]そして、それが含まれている場所をチェックインしたとき、それは持っていました

foto\'s

これは自動的に起こりますか?私のスクリプトには (まだ) エスケープがありません。

更新:だから、それをやっているのは魔法の引用です。php.ini ファイルは次のようになります。

; Magic quotes
;

だから私はそれを次のように変更しました:

; Magic quotes
;

; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off

; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off

; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = Off

; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = Off

しかしphpinfoでは、これはまだオンです:

magic_quotes_gpc    On  On
4

3 に答える 3

2

これはおそらく実際の魔法の引用です。それらをすぐに無効にしてから、通常のベストプラクティスに従って、何をしようとしているかに応じて、ユーザーが提供した入力を適切にエスケープしてください。

于 2012-09-28T09:35:55.073 に答える
0

移植性の問題があるため、常にマジック コードをオフにします。

以下の php コードは役に立ちます。このコードは、マジック クォートがオンになっていても機能します (php バージョン 6 以下)。

function escape($string) {
    if (version_compare(phpversion(), '6', '<')) {
        if (get_magic_quotes_gpc())
            $string = stripcslashes($string);
    }
    if (!is_numeric($string))
        $string = addslashes($string);
    return $string;
}

使用法:

$sql = "INSERT INTO 従業員(id, 名前) VALUES(1001, '".escape($_POST['name'])."')";

お役に立てれば。

于 2012-09-28T10:39:26.757 に答える
0

魔法の引用符を切り捨てる.

オフにする方法については、ここをクリックしてください。

于 2012-09-28T09:39:35.433 に答える