データベースに挿入してエスケープ操作を実行する
php メソッド: 1. magic_quotes_gpc 項目を設定します; 2. magic_quotes_runtime 項目をオンにします; 3. エスケープを自動的に実装するには、magic_quotes_sybase 項目をオンにします。
この記事の動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター
php はデータベースにどのように挿入し、脱出作戦を実行しますか?
php データベースに書き込むときの特殊文字列の処理 (特殊文字をエスケープする場合)
MySQL および GET および POST データを処理するときは、引用符が必要になることがよくあります。逃げられている。
PHP には、' (一重引用符)、" (二重引用符)、\ (バックスラッシュ)、および NULL 文字を自動的に変換できる設定が 3 つあります。
PHP ではこれをマジック クオートと呼びます。これら 3 つは、設定は
magic_quotes_gpc
です。HTTP リクエスト データ (GET、POST、COOKIE) に影響します。実行時に変更することはできません。PHP のデフォルトでは、値はオンです。
これをオンにすると、GET、POST、COOKIE で渡されたデータが自動的にエスケープされます。
例: test.php?id=abc'de"f
echo $_GET['id']; # abc\'de\"f
magic_quotes_gpc=On を取得します。これはオンになっており、上記の $_GET などのデータベースへの書き込みには影響しません。 [' id'] がデータベースに書き込まれても、依然として abc'de"f,
逆に、magic_quotes_gpc=Off; の場合、文字には引用符が必要です (一重引用符または二重引用符に関係なく)。引用符))、mysql に直接書き込まれると、直接空白になります
しかし、mysql ではなくドキュメントに書き込むと、空白になります。この場合、abc\'de\"f になります。
magic_quotes_runtime
オンにすると、データベースやデータベースなどの外部ソースからデータを取得して返すほとんどの関数が実行されます。テキスト ファイルの場合、返されるデータはバックスラッシュでエスケープされます。このオプションは実行時に変更でき、PHP のデフォルト値はオフです。
magic_quotes_sybase
オンにすると、オンにすると、一重引用符はバックスラッシュの代わりに一重引用符を使用してエスケープされます。このオプションは、magic_quotes_gpc を完全にオーバーライドします。両方のオプションを同時にオンにすると、一重引用符は " としてエスケープされます。二重引用符、バックスラッシュ、および NULL 文字はエスケープされません。
我表单内容本来是:<img alt=”" width=”400″ height=”300″ src=”/Upfiles/201105/images/1306657040.jpg” /> <img alt=\”\” width=\”400\” height=\”300\” src=\”/Upfiles/201105/images/1306657040.jpg\” />
対策 1: php.ini ファイルを変更する (php.ini の変更方法については説明しません。ググってください)
対策 2: エスケープを解除する
ステップ 1: $_POST['content'] などの送信したデータを見つけて、それを $content=stripslashes($_POST['content']);
ステップ 2:将来的には、$POST['content'] を $content
に置き換えます。 ステップ 3: データベースに送信します。データベース ストレージは通常のままです: 2c2045c58a4baffae9c6d9ba317b576b
abe7c4f11750a6dd5452c82127d23684 (これを解決する方法は知っているはずですよね? もう一度言ってみましょう)
4 番目のステップ: ストリップスラッシュを使用する( ) データベースから読み取られたコンテンツをフィルタリングします。
stripslashes() この関数は、addslashes() 関数によって追加されたバックスラッシュを削除します。データベースまたは HTML フォームから取得したデータをクリーンアップするために使用されます。
(
PHP ページで次のような状況が発生したくない場合:
一重引用符は\' としてエスケープされます
二重引用符は \" としてエスケープされます
次に、次の設定を行うことで防止できます:
php.ini で設定: magic_quotes_gpc = Off)
要約は次のとおりです:
1. magic_quotes_gpc=on の場合、
では
addslashes() およびtripslashes() を実行できません。入力および出力データベース操作の文字列データの場合、データは正常に表示されます。
この時点で入力データに対してaddslashes()を実行する場合、
その後、stripslashes()を使用する必要があります。バックスラッシュを出力するときに余分な部分を削除します。
2。magic_quotes_gpc=off
の場合、入力データを処理するためにaddslashes()を使用する必要がありますが、書式設定するためにstripslashes()を使用する必要はありません。出力
addslashes() はバックスラッシュをデータベースに書き込まないため、mysql が SQL ステートメントの実行を完了するのに役立つだけです。
全文: http: //blog.csdn.net /qinglianluan/article/details/26272689
php get_magic_quotes_gpc() 関数の使用法の紹介
http://www.php100.com/html/php/hanshu/ 2013/0905/4689.html //次のように理解できます: この関数は、サーバーの「特殊文字のエスケープ」機能がオンになっているかどうかを判断します。
addslashes()
Full text: http://php.net/manual/zh /function.addslashes.php //この関数は、特殊文字を通常の文字にエスケープします。
推奨学習: 「PHP ビデオ チュートリアル 」
以上がPHPでデータベースに挿入してエスケープ操作を実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。