私はPHPとMySQLを使用して基本的なフォーラムを強化しています。ユーザーがアポストロフィ(')を使用するか、投稿にリンクを挿入すると、mysql_real_escape_string関数がテキストに\を追加します。投稿を表示するとき、リンクは機能せず、すべてのアポストロフィの前に\が付いています。
テキストを出力する前に何かをしていないという問題ですか、それともMySQLに書き込む前にデータを適切にクリーンアップしていないという問題ですか?
私はPHPとMySQLを使用して基本的なフォーラムを強化しています。ユーザーがアポストロフィ(')を使用するか、投稿にリンクを挿入すると、mysql_real_escape_string関数がテキストに\を追加します。投稿を表示するとき、リンクは機能せず、すべてのアポストロフィの前に\が付いています。
テキストを出力する前に何かをしていないという問題ですか、それともMySQLに書き込む前にデータを適切にクリーンアップしていないという問題ですか?
magicquotesはオンになっていますか?次のようなPHPページを作成することで、すばやく確認できます。
<?php var_dump(get_magic_quotes_gpc()) ?>
ページにのようなものが記載されている場合int(1)
、原因はではなくmysql_real_escape_string
、PHP自体です。これはセキュリティ機能でしたが、あまり安全ではなく、ほとんどの場合面倒でした。各変数をサニタイズする前に、まずストリップスラッシュでスラッシュを元に戻す必要があります。
これを使用して、魔法の引用符をオフにすることもできます。
if ( version_compare(PHP_VERSION, '5.3.0', '<') ) {
set_magic_quotes_runtime(0);
}
サーバーが5.3.0未満のバージョンのphpを実行している場合は、魔法の引用符がオフになります。