ホームページ  >  記事  >  php教程  >  PHP register_globals 値の on および off_php の基本についての理解を共有する

PHP register_globals 値の on および off_php の基本についての理解を共有する

PHP中文网
PHP中文网オリジナル
2016-05-16 09:00:111497ブラウズ

php register_globals 値の on および off_php の基本についての理解を共有します:

register_globals の値は次のように設定できます: on または off。それぞれ説明するコードの違い。

コード:

<form name="frmtest" id="frmtest" action="url">
<input type="text" 
name="user_name" id="user_name">
<input type="password" 
name="user_pass" id="user_pass">
<input type="submit" 
value="login">
</form>



register_globals=off の場合、次のプログラムが受信するときに使用する必要があります。 $_get['user_name'] および $_get['user_pass'] は、渡された値を受け入れます。 (注:

のメソッド属性が post の場合、$_post['user_name'] と $_post['user_pass'] を使用する必要があります)

register_globals=on の場合、次のプログラムを直接使用できます。 $user_name と $user_pass は値を受け入れます。

register_globals はその名の通り、グローバル変数として登録するという意味なので、on の場合は渡された値をそのままグローバル変数として登録して直接利用することになり、off の場合は特定の配列に移動するには、それを取得します。したがって、値を取得できないという上記の問題に遭遇した友人は、まず register_globals 設定が値を取得する方法と一致しているかどうかを確認する必要があります。 (確認するには、phpinfo() 関数を使用するか、php.ini を直接確認できます)

ここで何が問題なのか見てみましょう。

次の php スクリプトを見てください。このスクリプトは、入力されたユーザー名とパスワードが正しい場合に web ページへのアクセスを承認するために使用されます。

コードは次のとおりです。 p>

<?php
// 检查用户名及口令
if ($username == 'kevin' and $password == 
'secret')
$authorized = true;
?>
<?php if (!$authorized): 
?>
<!-- 未授权的用户将在这里给予提示 -->
<p>Please enter your username 
and password:</p>
<form action="<?=$PHP_SELF?>" 
method="POST">
<p>Username: <input type="text" name="username" 
/><br />
Password: <input type="password" name="password" 
/><br />
<input type="submit" 
/></p>
</form>
<?php else: ?>
<!-- 有安全要求的HTML内容 
-->
<?php endif; ?>

上記のコードの問題は、正しいユーザー名とパスワードを入力しなくても簡単にアクセスできることです。ブラウザのアドレスバーの最後に ?authorized=1 を追加するだけです。 php はフォームの送信、url クエリ文字列、cookie など、送信された値ごとに変数を自動的に作成するため、$authorized が 1 に設定され、権限のないユーザーがセキュリティ制限を超える可能性があります。

上記は、php register_globals 値の on および off_php についての理解を共有するための基本的な内容です。さらに関連する内容については、php 中国語 web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。