PHP には、データを引用するのに便利な 2 つのマジック参照関数 magic_quotes_gpc と magic_quotes_runtime が用意されています。これらの 2 つの関数が php.ini で ON に設定されている場合、引用するデータには単一引用符 '、二重引用符 '、およびバックスラッシュが含まれます。行 には自動的にバックスラッシュが追加され、シンボルが自動的に変換され、データ操作が正しく行われるようになります。ただし、PHP のバージョンやサーバー構成が異なると、一部の magic_quotes_gpc と magic_quotes_runtime が on に設定されます。 . off なので、作成するプログラムは on と off の両方の条件に準拠する必要があります。では、magic_quotes_gpc 関数と magic_quotes_runtime 関数の違いは何でしょうか。magic_quotes_gpc のスコープは次のとおり
です
。
アクションの時間: リクエストは、たとえばスクリプトの実行時に開始されます。
Magic_quotes_runtime
スコープ: ファイルから読み取られたデータ、exec() の実行結果、または SQL クエリから取得されたデータ。
アクション時間: スクリプトが実行状態で生成されたデータにアクセスするたび。
したがって、magic_quotes_gpc の設定値は Get/Post/Cookies を通じて取得されるデータに影響し、magic_quotes_runtime の設定値はファイルから読み取られるデータまたはデータベース クエリから取得されるデータに影響します。
例:
<フォームアクション=""メソッド="ポスト">
STR:<input type="text" name="str">
<入力タイプ=”送信”>
</フォーム>
<?php
/* 次の形式に記入します: '" これらの記号は、magic_quotes_gpc がオンになっていない場合、バックスラッシュでエスケープされません*/
echo '現在 POST で渡される値は次のとおりです:' ,$_POST['str'], '<br />';
if (get_magic_quotes_gpc()) { // magic_quotes_gpc がオンになっているかどうかを確認し、オンになっていない場合は、addslashes を使用して変換します。正義の
$str = $_POST['str'];
} それ以外 {
$str = ラッシュを追加します($_POST['str']);
echo
'これがエスケープされたバージョンです:' ,$str, '<hr />';
$sql = "INSERT INTO lastnames (lastname) VALUES ('$str')";
//=========================== = ================================================ = ======
//-----magic_quotes_gpc は、Get/Post/Cookies を通じて取得されたwww.devdao.comデータのみをエスケープします。
//-----magic_quotes_runtime はエスケープします: ファイルから読み取られたデータ、exec() の実行結果、または SQL クエリから取得されたデータ
//=============================================== ====================================
$data = implode(file('try.php')); // テストのために文字 '" を書き込みます。
echo 'これがtry.phpのデータです';
if (get_magic_quotes_runtime()) {
$データ = $データ;
echo 'システムによってエスケープされました' .$data;
} それ以外 {
echo 'addslashes によってエスケープされました' .$data =addslashes($data);
"
姓 (姓) 値 ('$data') に挿入";
echo '<br />SQL文は:<br />' ,$sql;
//---データベースに入るときはすべてエスケープされますが、余分なバックスラッシュがあります。元のデータを読み取る場合は、stripslashes() を使用してバックスラッシュを削除します。
//---stripslashes() とaddslashes() は逆の効果を持ちます
?>最も重要な違いは、上記の 2 つの点です。magic_quotes_gpc の設定値は、Get/Post/Cookies によって取得されるデータに影響します。magic_quotes_runtime の設定値は、ファイルからの読み取りに影響します。ちなみに、set_magic_quotes_runtime(): magic_quotes_runtime 値を 0=off 1=on に設定します。 echo phpinfo() を使用します。 ): magic_quotes_gpc 値を確認します。 0 = 閉じる。 get_magic_quotes_runtime (): magic_quotes_runtime 値を確認します。 0=オフ、1=オン。 set_magic_quotes_gpc() 関数がないことに注意してください。つまり、magic_quotes_gpc の値はプログラム内で設定できません。