問題タブ [magic-quotes-gpc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - _POST_GET変数と_COOKIE変数には常にストリップスラッシュを使用する必要があります
get_magic_quotes_gpc()
PHPの関数について読んだとき、私は本当に混乱しています。
関数が非推奨になると言われているところはどこでも(例)。
しかし、PHP 5.3のデフォルトの動作は何ですか?私は、混乱しないように、スクリプトの最初で、すべての変数をチェックしmagic_quotes_gpc
て、すべてのスラッシュを削除していました。POST
GET
COOKIE
ただし、を使用して追加されたスラッシュをチェックする必要がない場合get_magic_quotes_gpc()
、PHP 5.3でスラッシュが追加されていなければ、常にスラッシュを削除すると誤ったデータが生成されます。
私はこれと同じ混乱を持っています
現在magic_quotes_gpc
、サーバー(PHP 5.2.17)でオンになっているので、スラッシュを削除する必要があります。しかし、将来のPHPバージョンに備えるために、これをどのように処理する必要がありますか?
将来、スクリプトの開始時に実行時にデフォルト値を設定できますか?しかし、デフォルト値は何ですか?
php - filter_input()はいつPOST変数のスラッシュを削除しますか?
magic_quotes_gpc
PHP5.2.17とディレクティブが有効になっているサーバーで実行される小さなPHPスクリプトを作成しました。
php.iniファイルへの書き込みアクセス権がないので、ユーザー入力からすべてのスラッシュを削除したいと思います。
これは、magic_quotes_gpc
ディレクティブがオフになっている場合でも機能するはずです(たとえば、スクリプトを別のサーバーに移動する場合)。
また、配列がユーザーによって送信されたときに再帰的に機能する必要があります。
私は組み込み関数を使用することを好みます。
これにより、サーバーで次の結果が得られます。
配列キーを除いて、スラッシュが削除されているようです。
または、スラッシュが追加されることはありませんか?(非推奨であるため、ディレクティブを無視する可能性がfilter_input()
ありますが、その参照は見つかりませんでした)filter_input_array()
magic_quotes_gpc
スラッシュを削除する/設定しない動作は、filter_input()
システムfilter_input_array()
パラメータに依存していますか?ここで
の警告がわかりません。
php - PHP 5.3 の magic_quotes は消えません
PHP 5.3.2 を実行している Ubuntu 10.04 サーバーがあり、php.ini ファイルに次の行を設定しています。
他の php.ini ファイルはありません (ハード ドライブ全体を検索しました)。すべての apache2 構成ファイル (ハード ドライブ全体のすべての .htaccess ファイルを含む) をチェックしましたが、他の場所では参照されていません。
でも:
次の出力を生成します。int(1)
つまり、魔法の引用符がオンになっています。これは、引用符付きの任意のタイプのリクエストを追加することで簡単に確認でき、引用符で囲まれます。 root .htaccess ファイルに以下を追加して、これを修正しました。
前述のコードは、目的の結果を生成するようになりました: int(0)
、出力は引用されません。
では、質問:なぜ、神よ、なぜ、そもそも魔法の引用符がオンになっているのですか?! はい、この質問は他の方からの質問と似ています。私は「迅速な修正」を探しているわけではありません。はい、魔法の引用符が php 5.4 で削除されることは知っています。しかし、実際には、5.4 が出てから数年間は下位互換性を維持する必要があります (別のクライアントなど)。ルート .htaccess ファイルに行を追加することでこれを修正できることはわかっていますが (先ほど示したように)、そもそも php.ini 設定がどのようにオーバーライドされたかをより深く理解したいと考えています。
それで、それがどのようにオンにされたのかについて誰かが何か考えを持っていますか?
php - 関数エラーを再宣言できません
配列の魔法の引用符からスラッシュを削除しようとしています。したがって、2つの関数があります。1つはスラッシュを削除することで、もう1つは変数を設定することです。
ライブサーバーでこのエラーが発生しますが、理解できません。
致命的なエラー:16行目のjson.phpでstripslashes_array()(以前はjson.php:16で宣言されていた)を再宣言できません
16function stripslashes_array($array)
行目は間違いがないように見えるこの行を参照しています。
これを修正する方法はありますか?
php - php非推奨のmagic_quotesエラーは消えません
しばらく前から別のトピックがあることは知っていますが、そこには確かな答えはありませんでした。
Debian 6、Apache 2.2、PHP5.3.3を実行しています。サーバー上のphpinfo()出力を見ると、magic_gpc_quotesがoffに設定されていることが示されています。誰かがページにアクセスするたびに、私のerror.logファイルがこのエラーでスパムされています。
すべての.iniファイルを検索しましたが、すべてのファイルでmagic_quotes_gpcがoffに設定されています。
私はSuhosinで保護されたmod_fastcgiとphpを使用しています。これらのいずれかがmagic_quotes_gpcの動作に影響を与えているかどうかはわかりませんが、どうすればよいか途方に暮れています。この問題を解決するための助けをいただければ幸いです。
また、apt-get updateを実行しましたが、すべてが最新です。
実行grep -r 'magic_quotes_gpc' /
すると、3つのphp.iniファイルが返され、すべてが表示されますmagic_quotes_gpc = off
mod_fastcgiが問題の原因である可能性があると思ったので、スクリプトがそれを使用できないようにしましたが、それでもエラーが発生します。
mysql - MySQLデータベースからバックスラッシュを削除する必要がありますか?
PDOプリペアドステートメントを使用してデータをMySQLデータベースに挿入していますが、文字列内のアポストロフィ(一重引用符)がバックスラッシュ(\
)を前に付けてデータベースに格納されていることに気付きました。
私はstripslashes($string)
出力で使用します、そしてもちろんこれはそれらを取り除きます。
サーバーのphpinfo()
情報(PHPバージョン5.2.17)で「magic_quotes」を検索したところ、次のことがわかりました。
- magic_quotes_gpc:ローカル値=オン、マスター値=オン
- magic_quotes_runtime:ローカル値=オフ、マスター値=オフ
- magic_quotes_sybase:ローカル値=オフ、マスター値=オフ
まず、magic_quotes_gpcをオフにすると、バックスラッシュの発生を防ぐことができますか?現在、サーバーのphp.iniマスター設定にアクセスできませんが、理解しているように、ディレクティブを使用してルート.htaccessファイルを構成することで無効にできますphp_flag magic_quotes_gpc Off
。
第二に、データベースでのこれらのバックスラッシュの防止は望ましいですか?ここで「やる前によく考えなさい」というやや不可解な発言を見たので、これをお願いします。
mysql - magic_quotes_gpc をオフにして PDO DB を挿入すると、db にバックスラッシュが発生するのはなぜですか?
私が使用している (php_fastcgi5 を実行している) サーバーでは、このディレクティブを含むルート ディレクトリに .htaccess ファイルがあり、magic_quotes_gpc をオフにします。
phpinfo() の出力は、magic_quotes_gpc のローカル値が実際にオフであることを報告します。(ただし、マスター値は「オン」です。)
これが正確に報告されているかどうかはわかりません。1つはこの投稿を読んだため、もう 1 つは、PDO プリペアード ステートメントを使用する次のコードでも、データベース レコードにバックスラッシュが挿入されたままになっているためです。
このコードを使用してデータベースに挿入されたテキストが、アポストロフィの前にスラッシュが追加された db レコードになる理由を知っている人はいますか?
PHP が php_fastcgi5 として実行されているためですか (つまり、magic_quotes_gpc をオフにする .htaccess ディレクティブが機能していないためですか)? もしそうなら、回避策はありますか?(php.ini ファイルにはアクセスできません。)
php - PHP:magic_quotes_gpc
PHPのマニュアルによると:
GPC(Get / Post / Cookie)操作のmagic_quotes状態を設定します。magic_quotesがオンの場合、すべての'(一重引用符)、 "(二重引用符)、\(バックスラッシュ)、およびNULはバックスラッシュで自動的にエスケープされます。
しかし、これは$ _REQUEST変数にも当てはまりますか?
php - magic_quoteの影響を受けるデータの修正
いくつかの問題を修正するためのCMSがあります。ホスティングサービスがサーバーでphp_magic_quotesを有効にしているため、データベースにはスラッシュ付きのコンテンツが含まれています。プロジェクトを取得したら、ホスティングパーティにmagic_quotesをオフにするように要求しましたが、問題は発生しなくなりました。ただし、魔法の引用符があるため、影響を受ける既存のデータを修正する必要があります。これらを修正するために使用できるmysqlまたはphpコマンドはありますか?一部のレコードは悪影響を受けました。例として、私はデータベースでこのようなものを見ることができ you\\\\\\'r
ますこれらの既存のデータを修正するための提案に感謝します。
php - 引用したテキストが「このように」表示されるのはなぜですか?
重複の可能性:
「すべての引用符の前にスラッシュ」の問題
次のようなコードを使用して、php アプリケーションのさまざまな部分間でメッセージを渡しています。
反対側でそれを拾うコードは次のようになります。
私の開発環境では、出力は次のようになります"Some site"
。私の運用環境では、出力は次のようになります\"Some site\"
。
これは、環境間の設定の違いであると私は信じていphp.ini
ます。眼球がマメになるまで探しましたが、違いがわかりません。URL で渡される内容は次のようになります。
このコードを入れると:
上記の変数割り当てとヘッダー呼び出しの間で、URL は次のようになります。
ただし、どちらの環境でもメッセージは表示されません。$_REQUEST['site']
アンパサンドが含まれている場合も同様の問題があります。
ここで何が起こっているのか、そしてそれを修正する方法を誰かが説明できますか?