2009-07-24 17 views
1

私のPHPアプリケーションでは、magic_quotesを処理するためにstripslashes()を使用していますが、ユーザーが入力に\を入力できるので、magic_quotesが入れているスラッシュを削除したいだけです。stripslashes()を区別して使用する

答えて

8

stripslashesスラッシュを無差別に削除しません。マジッククオートをオンにする

場合、それは'\\''\'を置き換え、スラッシュをエスケープだろう、とstripslashesは、ユーザーが入力したものあなたを取り戻すために'\''\\'を交換し、正しくエスケープマジッククオートを元に戻す必要があります。

私はあなたがおそらくこのような何かしたいと思う:

// Ripped from the PHP manual (http://us3.php.net/manual/en/function.get-magic-quotes-gpc.php) 
if (get_magic_quotes_gpc()) { 
    $lastname = stripslashes($_POST['lastname']); 
} 
else { 
    $lastname = $_POST['lastname']; 
} 

そのコード$lastnameの終わりには、ユーザが入力したものを除くすべてのスラッシュを持つべきではありませんが。

マジッククオートはセキュリティ上の問題で、新しいバージョンのPHPでは非推奨です(the docs参照)。

-1

は、独自のエンコード/デコード機能を転がり試してみてください、そうのように:magic_quotes_gpcのを使用して

function doEncode($string){ 
    return addslashes(str_replace("\","\\",$string)); 
} 

function doDecode($string){ 
    return str_replace("\\","\",stripslashes($string)); 
} 
2

がとにかく悪い考えであるPHP 5.5のようを行って5.3とのように、それが正式に廃止予定です。もっと重要なことに(そしてすぐに)、弱いセキュリティを奨励します。なぜなら、実際にはは実行されません。は、mysql_real_escape_stringやプリペアドステートメントやストアドプロシージャでは役に立ちません。

あなたがそれを取り除くことができる場合は、してください...

関連する問題