ホームページ  >  記事  >  バックエンド開発  >  PHPマジック関数アプリケーションの詳細説明_PHPチュートリアル

PHPマジック関数アプリケーションの詳細説明_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-15 13:25:20894ブラウズ

PHP には、データを引用するのに便利な 2 つのマジック参照関数 magic_quotes_gpc と magic_quotes_runtime が用意されています。これらの 2 つの関数が php.ini で ON に設定されている場合、引用するデータには単一引用符 ' と二重引用符 ' が表示されます。これらは、シンボルを自動的に変換し、データ操作の正しい動作を保証するために自動的に追加されます。ただし、PHP のバージョンやサーバー構成が異なると、一部の magic_quotes_gpc と magic_quotes_runtime がオンに設定されます。作成するプログラムは、on と off の両方の条件に準拠する必要があります。では、magic_quotes_gpc と magic_quotes_runtime の違いは何でしょうか。次の説明を参照してください。

magic_quotes_gpc スコープは次のとおりです: WEB顧客サーバー。リクエストは、たとえば、スクリプトの実行時に開始されます。


magic_quotes_runtime

スコープ: ファイルから読み取られたデータ、または exec() の実行結果、または SQL クエリから取得されたデータ。実行状態で生成されたデータにアクセスします

したがって、magic_quotes_gpc の設定値は、Get/Post/Cookies を通じて取得されたデータに影響します。magic_quotes_runtime の設定値は、ファイルから読み取られたデータまたはデータベース クエリから取得されたデータに影響します。

例:

<form action="" method="post" >STR:<input type="text" name="str"><input type="submit"></form><?php/* 我们在表单里填写:    '"    这些符号,如果magic_quotes_gpc没有开启,那么他们不会被反斜杠转义 */echo '现在通过POST传递过来的值是:' ,$_POST['str'], '<br />';if (get_magic_quotes_gpc()) {      // 检查magic_quotes_gpc是否打开,如果没有打开,用addslashes进行转义      $str = $_POST['str'];} else {      $str = addslashes($_POST['str']);}echo '这里是转义过后的:' ,$str, '<hr />';$sql = "INSERT INTO lastnames (lastname) VALUES ('$str')";//=====================================================================================//-----magic_quotes_gpc只会转义:     通过Get/Post/Cookies获得的数据//-----magic_quotes_runtime会转义:从文件中读取的数据或执行exec()的结果或是从SQL查询中得到的//=====================================================================================$data = implode(file('try.php'));      // 我们在里面依然写'"这几个字符,用来测试echo '这里是try.php的数据,';if (get_magic_quotes_runtime()) {      $data = $data;      echo '被系统自带转义的' .$data;} else {      echo '被addslashes转义了的' .$data = addslashes($data);}$sql = "INSERT INTO lastnames (lastname) VALUES ('$data')";echo '<br />SQL语句为:<br />' ,$sql;//---入库都转义了,但是多余了反斜杠,我们要读出来是原来的数据时候使用stripslashes()去掉反斜杠//---stripslashes()和addslashes()作用相反?>
magic_quotes_gpcの設定値は、Get/Post/Cookiesを通じて取得されたデータに影響します magic_quotes_runtime の設定値は、ファイルから読み取られたデータ、またはデータベース クエリから取得されたデータに影響します
最も重要な違いは、上記の2点です: 異なる処理オブジェクトを対象としています
ちなみに、関連付けたい関数をいくつか示します:


set_magic_quotes_runtime():
magic_quotes_runtime 値を設定します。 0=off.1=on。デフォルトの状態は off です。echo phpinfo();

get_magic_quotes_gpc():

magic_quotes_gpc の値を表示します。0=off.1=on .


get_magic_quotes_runtime():

magic_quotes_runtime の値を表示します。0=オフ、1=オンです。


set_magic_quotes_gpc() 関数がないことに注意してください。つまり、magic_quotes_gpc の値はプログラム内で設定できません。


http://www.bkjia.com/PHPjc/446683.html
www.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/446683.html技術記事 PHP には、データを引用するのに便利な 2 つのマジック参照関数 magic_quotes_gpc と magic_quotes_runtime が用意されており、これら 2 つの関数が php.ini で ON に設定されている場合、データを引用してくれます...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。