2011-01-23 15 views
1

私はPHPとMySQLを使用して基本的なフォーラムを強化しています。ユーザーがアポストロフィ( ')を使用するか、リンクにリンクを挿入すると、mysql_real_escape_string関数はテキストに\を追加します。投稿を表示すると、リンクが機能せず、すべてのアポストロフィの前に\が付きます。データベースに書き込む前にデータを消去するより良い方法

私はテキストを出力する前に何かしていない、またはMySQLに書き込む前にデータを適切にクリーニングしていないという問題はありますか?

答えて

2

マジックコートはオンですか?あなたはそうのようなPHPページを作成することにより、すばやくチェックすることができます。

<?php var_dump(get_magic_quotes_gpc()) ?> 

ページはint(1)ような何かを言うならば、犯人はmysql_real_escape_stringではなく、PHPそのもの。それはセキュリティ機能でしたが、あまり安全ではなく、たいていちょっと迷惑でした。各変数をサニタイズする前に、まずスラッシングをstripslashesで元に戻す必要があります。

0

また、これを使ってマジッククオートをオフにすることができます

if (version_compare(PHP_VERSION, '5.3.0', '<')) { 
    set_magic_quotes_runtime(0); 
} 

サーバーが5.3.0未満、PHPのいずれかのバージョンを実行しているときには、マジッククオートをオフにします。

関連する問題