2012-01-16 14 views
0

私は定期的に同様の形式を使用していて、単一の二重引用符がフォームに入力されると、自分自身に出力すると電子メールで引用符がASCII \ 'のバックスラッシュを使って見て、ユニークな文字エンコーディングの特殊文字にディッピングしますが、通常の引用符として出力するのに役立つものは何も見つかりません。引用符で囲まれたPHPからの出力

+2

ここにコードを貼り付けることはできますか?私は問題を少し早く解決するのに役立つかもしれないと思う。 –

+0

あなたのシステムのマジッククオートの設定をチェックしましたか? http://php.net/manual/en/security.magicquotes.php – Mchl

答えて

0

これはPHPの「Magic Quotes」という古いセキュリティ機能です。 GETおよびPOST変数からの引用符は、バックスラッシュでエスケープされます。

サーバーphp.iniのmagic_quotes_gpcの値をoffに変更するか、手動でstripslashes($string)を使用して文字列をサニタイズして無効にすることができます。

+0

ねえ、stripslashesを使ってくれてありがとうございます($ _ POST ['comment']); filter_sanitize_stringを追加する代わりに – user966834

+0

しかし、あなたのスクリプトは 'magic_quotes_gpc'が有効になっていることに依存していることに注意してください。この機能はDEPRECATEDとマークされており、PHPの将来のリリースでは削除される可能性があります。 – DerVO

1

古くなった古くなったPHPの設定は、magic_quotes_gpcです。
ただオフにする

+0

ok iveはphp.iniでこれを無効にしましたが、同じ問題があったとしても – user966834

+0

が正しいphp.iniファイルを編集していることを確認してください。後でサーバを再起動 –

0

どのバージョンのPHPを使用していますか? $_GET$_POSTの引用符にバックスラッシュを自動的に追加する廃止予定の "機能"が有効になっているようです。それは現在、それを使用することは悪い習慣と考えられているので、それが無効になっていることを確認する必要があります。有効かどうかをチェックして無効にする方法については、thisページを参照してください。

一般に、引用符がエスケープされた文字列がある場合は、stripslashesを使用して文字列を取り除くことができます。

$str = "\'hello\'"; 
echo $str . "\n"; 
//\'hello\' 
echo stripslashes($str) . "\n"; 
//hello 
関連する問題