PHP
におけるmagic_quotes_gpcとmagic_quotes_runtimeの違い、機能、使用法
マジック クオートは、$_GET、$_POST、$_COOKIE が渡されたときに有効になります。
1.
条件: magic_quotes_gpc=off
データベースに書き込まれる文字列は、いかなる方法でもフィルタリングされていません。データベースから読み取られた文字列は一切処理されません。
データ: ?$data="snow"''sun"; (snow と sun の間には 4 つの連続した単一引用符があります)。
操作: 文字列を書き込みます: "snow"''sun" データベース、
結果: SQL ステートメント エラーが発生し、mysql は SQL ステートメントを正常に完了できず、データベースへの書き込みに失敗しました。
データベース保存形式: データなし。
出力データ形式: データなし。
注: 未処理の一重引用符は、データベースに書き込まれるときに SQL ステートメントでエラーを引き起こします。
2.
条件: magic_quotes_gpc=off
データベースに書き込まれた文字列は、関数 addlashes() によって処理されます。データベースから読み取られた文字列は一切処理されません。
データ: ?$data="snow"''sun"; (snow と sun の間には 4 つの連続した単一引用符があります)。
操作: 文字列を書き込みます: "snow"''sun" データベース、
結果: SQL ステートメントが正常に実行され、データがデータベースに正常に書き込まれました。
データベース保存形式: Snow"''sun (入力と同じ)
出力データ形式: Snow"''sun (同じinput) )
説明: addslashes() 関数は、SQL ステートメントが正常に実行できるように単一引用符をエスケープ文字に変換します。
ただし、データベースはデータとして保存されません。 「太陽」と「それは雪ではありません」私たちが想像していた太陽
3.
条件: magic_quotes_gpc=on
データベースに書き込まれた文字列はいかなる方法でも処理されません 🎜>データ: ?$data。 =”snow””sun”; (snow と sun の間には 4 つの連続した単一引用符があります)。
操作: 文字列:”snow”''sun” をデータベースに書き込みます。
結果: SQL ステートメントは正常に実行され、データはデータベースに正常に書き込まれました。
データベース保存形式: Snow"'sun (入力と同じ)
出力データ形式: Snow"'sun (入力と同じ)
説明: magic_quotes_gpc=on は、SQL ステートメントが正常に実行できるように単一引用符をエスケープ文字に変換します。
ただし、データベースには、私たちが想像したものではなく、snow"''sun が保存されます。 ''''太陽。
4.
条件: magic_quotes_gpc=on
データベースに書き込まれた文字列は、関数 addlashes() によって処理されます。データベースから読み取られた文字列は一切処理されません。
データ: ?$data="snow"''sun"; (snow と sun の間には 4 つの連続した単一引用符があります)。
操作: 文字列を書き込みます: "snow"''sun" データベース、
結果: SQL ステートメントが正常に実行され、データがデータベースに正常に書き込まれました。
データベースの保存形式: Snow''''sun (エスケープ文字を追加)
出力データ形式: Snow''''sun (エスケープ文字が追加されました)
説明: magic_quotes_gpc=on は、SQL ステートメントが正常に実行できるように、一重引用符を 'エスケープ文字に変換します。
addslashes は、データベースに書き込もうとしている一重引用符を ' に変換します。
データベースにデータとして書き込まれ、データベースは Snow''''sun
を保存します。 概要は次のとおりです。
1. magic_quotes_gpc=on の場合、
は入力できません。文字列データに対して
addslashes() およびtripslashes() 操作を実行すると、データは正常に表示されます。
この時点で入力データに対してaddslashes()を実行する場合、
出力時に余分なバックスラッシュを削除するにはstripslashes()を使用する必要があります。
2. magic_quotes_gpc=off
の場合、addslashes() を使用して入力データを処理する必要がありますが、addslashes() は出力
をフォーマットするために使用する必要はありません。バックスラッシュをまとめてください。 データベースへの書き込みは、mysql が SQL ステートメントの実行を完了するのに役立つだけです。
補足:
magic_quotes_gpc のスコープは次のとおりです: WEB クライアント サーバー; アクション時間: スクリプトの実行時など、リクエストの開始時。
magic_quotes_runtime スコープ: ファイルから読み取られたデータ、exec() の実行結果、または SQL クエリから取得されたデータ; アクション時間: 実行状態で生成されたデータにスクリプトがアクセスするたび
=== === ====== magic_quotes_gpc と magic_quotes_runtime の違いと使い方 =============
PHP には、データを引用するのに便利な 2 つのマジック参照関数 magic_quotes_gpc と magic_quotes_runtime が用意されています。この関数が php.ini で ON に設定されていると、一重引用符 ' と二重引用符 ' およびバックスラッシュが出現したときに、引用符で囲んだデータにバックスラッシュが自動的に追加され、シンボルが自動的に変換され、異なるバージョンでもデータ操作が正しく実行されるようになります。 PHP または別のサーバー構成では、いくつかの magic_quotes_gpc と magic_quotes_runtime がオンに設定され、いくつかはオフに設定されるため、作成するプログラムは両方の条件に準拠する必要があります。 次に、magic_quotes_gpc と magic_quotes_runtime の 2 つの関数の違いは何ですか?以下の説明:
magic_quotes_gpc
スコープ: WEB クライアント サーバー;
アクション時間: リクエストは、たとえばスクリプトの実行時に開始されます。アクションの範囲: ファイルから読み取られたデータ、exec() の実行結果、または SQL クエリから取得されたデータ。
アクションの時間: スクリプトが実行状態で生成されたデータにアクセスするたび。
つまり
magic_quotes_gpc の設定値は、Get/Post/Cookies を通じて取得されるデータに影響します
magic_quotes_runtime の設定値は、ファイルから読み取られるデータまたはデータベース クエリから取得されるデータに影響します
例:
コンテンツをクリップボードにコピー
コード: