register_globals=On の場合、次のプログラムは $user_name と $user_pass を直接使用して値を受け入れることができます。
register_globals はその名の通り、グローバル変数として登録するという意味なので、Onの場合は渡された値がそのままグローバル変数として登録されて直接利用され、Offの場合は特定の配列に行く必要がありますそれを得るために。したがって、値を取得できないという上記の問題に遭遇した友人は、まず register_globals 設定が値を取得する方法と一致しているかどうかを確認する必要があります。 (表示するには、phpinfo() 関数を使用するか、php.ini を直接表示できます)
次の PHP スクリプトを見てください。このスクリプトは、入力されたユーザー名とパスワードが正しい場合に Web ページへのアクセスを承認するために使用されます。
// ユーザー名とパスワードを確認します
if ($username == 'kevin' and $password == 'secret')
$ authorized = true ;
?>
ユーザー名とパスワードを入力してください:
上記のコードの問題は、正しいユーザー名とパスワードを入力しなくても簡単にアクセスできることです。ブラウザのアドレスバーの最後に ?authorized=1 を追加するだけです。 PHP はフォームの送信、URL クエリ文字列、Cookie など、送信された値ごとに変数を自動的に作成するため、$authorized が 1 に設定され、権限のないユーザーがセキュリティ制限を超える可能性があります。