この時点で入力データに対してaddslashes()を実行する場合は、出力時にstripslashes()を使用して余分なバックスラッシュを削除する必要があります。 2. PHPの場合 magic_quotes_gpc=off 入力データを処理するにはaddslashes()を使用する必要がありますが、出力のフォーマットにはstripslashes()を使用する必要はありません。addslashes()はバックスラッシュをまとめてデータベースに書き込むのではなく、mysqlによる実行の完了を支援するだけだからです。 SQL ステートメント。 補充: PHP magic_quotes_gpc スコープは次のとおりです: WEB クライアント サーバー; アクション時間: スクリプトの実行時など、リクエストの開始時。 magic_quotes_runtime スコープ: ファイルから読み取られたデータ、exec() の実行結果、または SQL クエリから取得されたデータ。 アクションの時間: スクリプトが実行状態で生成されたデータにアクセスするたび。 例: 1. 条件: PHP magic_quotes_gpc=off データベースに書き込まれる文字列は、いかなる方法でもフィルタリングされません。データベースから読み取られた文字列は一切処理されません。 データ: $data=”snow””’sun”; (snow と sun の間には 4 つの連続した一重引用符があります)。 操作: 文字列「snow」’ssun」をデータベースに書き込みます。 結果: SQL ステートメント エラーが発生しました。MySQL は SQL ステートメントを正常に完了できず、データベースへの書き込みに失敗しました。 データベース保存形式: データなし。 出力データ形式:データなし。 注: 未処理の一重引用符は、データベースに書き込まれるときに SQL ステートメント エラーを引き起こします。 2. 条件: PHP magic_quotes_gpc=off データ: $data=”snow””’sun”; (snow と sun の間には 4 つの連続した一重引用符があります)。 操作: 文字列「snow」’ssun」をデータベースに書き込みます。 結果: SQL ステートメントは正常に実行され、データはデータベースに正常に書き込まれました。 データベース保存形式:snow””sun(入力と同じ) 出力データ形式:snow””sun(入力と同じ) 説明:addlashes() 関数は、SQL ステートメントが正常に実行できるように、一重引用符をエスケープ文字に変換します。 しかし、データベースにデータとして保存されているのは「雪」「太陽」であり、私たちが想像している「雪」「太陽」ではありません。 3. 条件: PHP magic_quotes_gpc=on データベースに書き込まれた文字列はまったく処理されません。データベースから読み取られた文字列は一切処理されません。 データ: $data=”snow””’sun”; (snow と sun の間には 4 つの連続した一重引用符があります)。 操作: 文字列「snow」’ssun」をデータベースに書き込みます。 結果: SQL ステートメントは正常に実行され、データはデータベースに正常に書き込まれました。 データベース保存形式:snow””sun(入力と同じ) 出力データ形式:snow””sun(入力と同じ) 説明: PHP magic_quotes_gpc=on は、SQL ステートメントが正常に実行できるように、一重引用符を ' エスケープ文字に変換します。 しかし、データベースに保存されているのは、私たちが想像する「雪」「太陽」ではなく、「雪」「太陽」です。 4. 条件: PHP magic_quotes_gpc=on データ: $data=”snow””’sun”; (snow と sun の間には 4 つの連続した一重引用符があります)。 操作: 文字列「snow」’ssun」をデータベースに書き込みます。 結果: SQL ステートメントは正常に実行され、データはデータベースに正常に書き込まれました。 データベース保存形式:snow''''sun(エスケープ文字追加) 出力データ形式:snow''''sun(エスケープ文字追加) 説明: PHP magic_quotes_gpc=on は、SQL ステートメントが正常に実行できるように、一重引用符を ' エスケープ文字に変換します。 addslashes は、データベースに書き込まれる一重引用符を ' に変換し、後者の変換はデータとして書き込まれます。 データベース、データベースには雪「」「太陽」が保存されます