オンラインで誤った結果を返すための参照がオンラインで見つからないため、get_magic_quotes_gpc()
代わりに、問題を絞り込むためのチェックリストを提供します(これはおそらくコメントであるはずですが、それには長すぎます):
最初に行うことは、ファイルを編集して、php.ini
magic_quotes_gpcが実際にオフに設定されていることを確認することです。これを試すのに最適な場所は、問題が発生しているスクリプトと同じディレクトリにファイルを作成/編集することです。これはphp.ini
、スクリプトに到達する前にINI設定をオーバーライドできる最後の場所です(global_quotes_gpcはオーバーライドできません。スクリプトが実行されるまでに、損傷はすでに発生しています)。
php.ini
ファイルに次の行を追加します。
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
それらの最初のものだけがPOST変数に影響します(「gpc」は「Get、Post、およびCookies」を表します)が、それらはすべて吸うので、すべてを設定するのは良いことです。
これらの行を設定した後、魔法の引用符が実際にオフになっていることを確認できます。これで問題が解決した場合は、ディレクトリ構造を調べて、最初にオンになった場所を探す必要があります。これは、上位ディレクトリphp.ini
のファイル、.htaccess
ファイル、またはファイルにある可能性がありhttp.conf
ます。ここで何をしているのかわからない場合は、ホストを関与させることをお勧めします。
addslashes()
問題が解決しない場合は、スクリプト内の関数への呼び出しを確認する必要があります。grep -ir "addslashes" *
Linuxを使用している場合は、プロジェクトのルートディレクトリからコマンドを実行できるため、これは簡単です。Windowsで実行している場合は、Cygwin、unxutils、または別のUNIXレイヤーを調べる必要があります。私はunxutilsが大好きで、Windowsのセットアップや新しい仕事で最初にインストールするものの1つです。
フレームワークにこのようなものが組み込まれている理由はわかりませんが、一部の馬鹿がそれを試す可能性があると思います。grep
そのため、フレームワークファイルも確認する必要があります。フレームワークで提供されているファイルを必ず確認してくださいphp.ini
。ただし、これについては、上記ですでに説明した内容で説明する必要があります。
最後に、必ずに設定する必要がありerror_reporting
ますE_ALL | E_STRICT
。これは、php.ini
ファイルから、またはerror_reporting()
関数を使用して実行できます。他のPHPを実行する前に、これが設定されていることを確認してください。エラーがユーザーの前に表示される前に、どんなに小さくてもすべてのエラーを確認できるように、常に最高のエラー報告設定で開発する必要があります。これらのエラーを確認するには、表示エラーも有効になっていることを確認してください。
質問に貼り付けたコードサンプルは有効ですが、コードからの直接のコピー/貼り付けではない場合、または偶然にエラーの原因となっている他のコードがある場合に備えて、error_reportingについて説明しました。get_magic_quotes_gpc()
エラーレポートを設定することにより、またはの正しい機能をブロックしている可能性のあるエラーを確認できますstripslashes()
。これらのエラーを修正できれば、残りのコードは意図したとおりに機能します。
幸運を。