ホームページ > バックエンド開発 > PHPチュートリアル > PHP は入力エスケープ文字を処理するコードを実装します。PHP エスケープ文字コード_PHP チュートリアル

PHP は入力エスケープ文字を処理するコードを実装します。PHP エスケープ文字コード_PHP チュートリアル

WBOY
リリース: 2016-07-12 09:05:15
オリジナル
905 人が閲覧しました

php は入力エスケープ文字を処理するためのコード、php エスケープ文字コードを実装します

最近 WordPress 3.6 で導入された関数から始めましょう リーリー

まず、PHP 組み込み関数 get_magic_quotes_gpc() について説明します

この関数の目的は、php.ini 設定の magic_quotes_gpc オプションの値を取得することです。
magic_quotes_gpc オプションの値が On の場合、PHP パーサーは、post、get、および cookie からのデータにエスケープ文字 "" を自動的に追加し、これらのデータがプログラム内の特殊文字によって引き起こされる致命的なエラーを引き起こさないようにします。データベースステートメントの間違い。

オンにすると、一重引用符 (')、二重引用符 (")、バックスラッシュ ()、NUL (NULL 文字) などの文字はバックスラッシュで囲まれます。それ以外の場合は、addslashes() を使用して手動で処理する必要があります
magic_quotes_gpc 値が On の場合は 1 を返し、それ以外の場合は 0 を返します
addslashes() 関数は、指定された定義済み文字の前にバックスラッシュを追加します。それが上記のキャラクターです

ただし、get_magic_quotes_gpc() 組み込み関数は PHP5.4 以降ではキャンセルされ、将来のエラーを回避するために、すべての入力は次のようにフィルターされます。 リーリー

mysql および GET および POST データを処理する場合、多くの場合、データの引用符をエスケープする必要があります。

PHP には、' (一重引用符)、" (二重引用符)、(バックスラッシュ)、および NULL 文字を自動的に変換できる 3 つの設定があります。 PHP ではこれをマジック クオートと呼び、これら 3 つの設定は


magic_quotes_gpc


HTTP リクエスト データ (GET、POST、COOKIE) に影響します。実行時に変更することはできません。 PHP のデフォルト値は on です。

これをオンにすると、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 文字はエスケープされません。

私のフォームの内容は元々: ””

””

対策1:php.iniファイルを修正する(php.iniの修正方法については触れませんので、ググってみてください)

対策2:エスケープを中止する

ステップ 1: $_POST['content'] などの送信したデータを見つけて、それを $content=stripslashes($_POST['content']); に変更します

ステップ 2: 将来的には、$POST['content'] を $content に置き換えます

ステップ 3: データベースに送信します。データベース ストレージはまだ正常です: ”"読んでまた出てきました

”” (これを解決する方法を知っているはずですよね?やめたらどうですか?くどいですか?

ステップ 4:stripslashes() を使用して、データベースから読み取られたコンテンツをフィルタリングします。

tripslashes() この関数は、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 ステートメントの実行を完了するのに役立つだけです。

www.bkjia.com本当http://www.bkjia.com/PHPjc/1069354.html技術記事 PHP は、入力エスケープ文字を処理するためのコードを実装します。PHP エスケープ文字コードは、最近 WordPress 3.6/** で導入された関数です。 * *...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート