ホームページ  >  記事  >  バックエンド開発  >  php_PHP チュートリアルの get_magic_quotes_gpc() 関数の説明

php_PHP チュートリアルの get_magic_quotes_gpc() 関数の説明

WBOY
WBOYオリジナル
2016-07-13 10:47:56832ブラウズ

get_magic_quotes_gpc 関数は、ユーザーが提供したデータにスラッシュを追加するかどうかを決定するために使用されます。これは php.ini 設定ファイルにあります。

Get_magic_quotes_gpc 関数の説明を紹介します。 PHP システム関数である PHP 環境変数 magic_quotes_gpc の値を取得します。

構文: long get_magic_quotes_gpc(void);

戻り値: 長整数
この関数は、PHP 環境設定の変数 magic_quotes_gpc (GPC、Get/Post/Cookie) の値を取得します。 0 を返すとこの機能がオフになることを意味し、1 を返すとこの機能がオンになることを意味します。

magic_quotes_gpc がオンになっている場合、すべての ‘ (一重引用符)、" (二重引用符)、(バックスラッシュ) および null 文字は、バックスラッシュを含むオーバーフロー文字に自動的に変換されます。 magic_quotes_gpc は、GPC によって送信されるデータ (get、post、cookie) の '' にバックスラッシュを自動的に追加するかどうかを設定します。 get_magic_quotes_gpc() を使用してシステム設定を検出できます。

この設定がオンになっていない場合は、addslashes() 関数を使用して追加できます。この関数の機能は、データベース クエリ ステートメントで必要な場合に特定の文字の前にバックスラッシュを追加することです。
これらの文字は、一重引用符 (’)、二重引用符 (")、バックスラッシュ ()、および NUL (NULL 文字) です。 デフォルトでは、PHP ディレクティブ magic_quotes_gpc がオンになっており、主にすべての GET、POST、および COOKIE データに対して addslashes() が自動的に実行されます。

magic_quotes_gpc によってエスケープされた文字列に対して addslashes() を使用しないでください。二重エスケープが発生するためです。この状況が発生した場合は、関数 get_magic_quotes_gpc() を使用して検出できます。

データベース攻撃を防ぐための get_magic_quotes_gpc() の正しい使い方

コードは次のとおりです

コードをコピー 関数 check_input($value) {
//スラッシュを削除します

if (get_magic_quotes_gpc())
{
$value = ストリップスラッシュ($value);
}
//数値でない場合は引用符を追加します
if (!is_numeric($value))
{
$value = “‘” . mysql_real_escape_string($value) 。 }
$value を返します;
}
$con = mysql_connect(“localhost”, “hello”, “321″);
if (!$con)
{
die(「接続できませんでした: .mysql_error());
」 }
// 安全な SQL を作成します
$user = check_input($_POST['user']);
$pwd = check_input($_POST['pwd']);
$sql = “SELECT * FROM users WHERE
ユーザー=$user AND パスワード=$pwd”;
mysql_query($sql);
mysql_close($con);
?>




要約は次のとおりです:
1. magic_quotes_gpc=on の場合、

入出力データベースの文字列データは何もできません addslashes() およびtripslashes() の操作では、データは通常どおり表示されます。

このとき入力データに対してaddslashes()を実行すると、

次に、出力時にstripslashes()を使用して余分なバックスラッシュを削除する必要があります。


2.magic_quotes_gpc=offの場合

入力データを処理するにはaddslashes()を使用する必要がありますが、出力のフォーマットにはstripslashes()を使用する必要はありません
addslashes() はバックスラッシュをデータベースに書き込まないため、mysql が SQL ステートメントの実行を完了するのに役立つだけです


http://www.bkjia.com/PHPjc/632823.htmlwww.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/632823.html技術記事 get_magic_quotes_gpc 関数は、ユーザーが提供したデータにスラッシュを追加するかどうかを決定するために使用されます。これは php.ini 設定ファイルにあります。get_magic_quotes_gpc() 関数を紹介します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。