php get_magic_quotes_gpc() 関数は何をしますか?
前にphpのstripslashes()関数とaddslashes()関数の違いを説明したときに、get_magic_quotes_gpc()関数について触れましたが、この関数は何をするのでしょうか?この章では、get_magic_quotes_gpc()
関数とその関連事項についていくつか説明します。
get_magic_quotes_gpc 関数は、ユーザーが提供したデータにスラッシュが追加されているかどうかを判断するために使用されます。これは php.ini 設定ファイル内にあります。 get_magic_quotes_gpc() 関数については、以下で詳しく説明します。
get_magic_quotes_gpc関数の紹介
PHPのシステム関数であるPHP環境変数magic_quotes_gpcの値を取得します。
構文:
long get_magic_quotes_gpc(void);
戻り値:long integer
この関数は、PHP 環境設定の変数 magic_quotes_gpc (GPC、Get/Post/Cookie) の値を取得します。 0 を返すとこの機能がオフになることを意味し、1 を返すとこの機能がオンになることを意味します。 magic_quotes_gpc がオンになっている場合、すべての ' (一重引用符)、" (二重引用符)、(バックスラッシュ)、および null 文字はバックスラッシュを含むオーバーフロー文字に自動的に変換されます。
php 設定ファイルには、ブール設定は magic_quotes_runtime です。オンにすると、PHP のほとんどの関数は、外部からインポートされたデータ (データベースやファイルを含む) のオーバーフロー文字にバックスラッシュを自動的に追加します。文字列内に複数のバックスラッシュがあるため、php.ini ファイルの magic_quotes_runtime ステータスを設定および検出するには、set_magic_quotes_runtime() と get_magic_quotes_runtime() を使用する必要があります
サーバーに関係なくすべての設定を実行できます。通常は、プログラムの先頭で get_magic_quotes_runtime を使用してこの設定のステータスを確認し、手動で処理するかどうかを決定するか、set_magic_quotes_runtime(0) を使用して最初にこの設定をオフにすることができます (または自動エスケープが必要ない場合)。
magic_quotes_gpc. GPC(get、post、cookie)で送信されるデータの「」にバックスラッシュを自動的に追加するかどうかを設定します。 get_magic_quotes_gpc() を使用してシステム設定を検出できます。この設定がオンになっていない場合は、addslashes() 関数を使用して追加できます。この関数の機能は、データベース クエリ ステートメントで必要な場合に特定の文字の前にバックスラッシュを追加することです。これらの文字は、一重引用符 (')、二重引用符 (")、バックスラッシュ ()、および NUL (NULL 文字) です。
PS: PHP 5.3.0 から非推奨となり、PHP 5.4.0 から削除されます。このオプションはPHP6 では削除されており、すべてのプログラミングは magic_quotes_gpc=Off で行う必要があります。この環境では、ユーザーのデータがエスケープされない場合、結果としてプログラム エラーが発生するだけでなく、データベースが破損する危険性があります。インジェクション攻撃のため、今後は、サーバーを PHP6 に更新する必要が生じてプログラムが正常に動作しなくなる可能性があるため、この設定をオンにする必要はありません。
php addlashes 関数の使用を決定するために get_magic_quotes_gpc 関数が有効になっているかどうかfunction SQLString($c, $t){
$c=(!get_magic_quotes_gpc())?addslashes($c):$c;
switch($t){
case 'text':
$c=($c!='')?"'".$c."'":'NULL';
break;
case 'search':
$c="'%%".$c."%%'";
break;
case 'int':
$c=($c!='')?intval($c):'0';
break;
}
return $c;
}
データベース攻撃を防ぐために get_magic_quotes_gpc() を使用する正しい方法
コードは次のとおりです
<?php function check_input($value) { // 去除斜杠 if (get_magic_quotes_gpc()) { $value = stripslashes($value); } // 如果不是数字则加引号 if (!is_numeric($value)) { $value = “‘” . mysql_real_escape_string($value) . “‘”; } return $value; } $con = mysql_connect(“localhost”, “hello”, “321″); if (!$con) { die(‘Could not connect: ‘ . mysql_error()); } // 进行安全的 SQL $user = check_input($_POST['user']); $pwd = check_input($_POST['pwd']); $sql = “SELECT * FROM users WHERE user=$user AND password=$pwd”; mysql_query($sql); mysql_close($con); ?>
概要: get_magic_quotes_gpc() の関数。関数は、magic_quotes_gpc の値を取得するものです。PHP6 では、magic_quotes_gpc オプションが削除されたため、この関数は存在しません。 )関数とstripslashes()関数の例
2.PHPのstripslashes()関数とaddslashes()関数の違いの詳細な例
以上がPHPのget_magic_quotes_gpc()関数の使い方の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。