PHP によるユーザー認証
スクリプトごとにパスワード保護を実装したい場合は、header() 関数を $PHP_AUTH_USER および $PHP_AUTH_PW グローバル変数と組み合わせて使用し、基本的な認証スキームを作成できます。典型的なサーバーベースの認証リクエスト/レスポンスラウンドは次のようになります:
1. ユーザーが Web サーバーにファイルをリクエストします。ファイルが保護領域内にある場合、サーバーは応答ファイルのヘッダーに 401 (違法ユーザー) 文字列を追加して応答します。
2. ブラウザが応答を確認すると、ユーザー名/パスワードのダイアログ ボックスが表示されます。
3. ユーザーはダイアログ ボックスにユーザー名とパスワードを入力し、[確認] ボタンをクリックしてこの情報をサーバーに送信します。
4. ユーザー名とパスワードが有効な場合、現在認証されているユーザーが保護領域内にいる限り、保護されたファイルがユーザーに表示されます。上記の認証プロセスはすべて有効です。
単純な PHP スクリプトは、適切な HTTP ヘッダーを送信することで HTTP 認証要求/応答システムをエミュレートし、クライアントの画面にユーザー名/パスワードのダイアログを自動的に表示できます。 PHP は、ユーザー入力ダイアログ情報を $PHP_AUTH_USER 変数と $PHP_AUTH_PW 変数に保存します。これらの変数を使用すると、ユーザー名/パスワードのチェックを満たさないリストをテキスト ファイル、データベース、または指定した場所に保存できます。 注: 3 つのグローバル変数 $PHP_AUTH_USER、$PHP_AUTH_PW、および $PHP_AUTH_TYPE は、PHP の場合にのみ有効です。モジュールとしてインストールされます。 CGI バージョンの PHP を使用している場合は、.htaccess ベースの認証またはデータベース ベースの認証の使用に制限されるため、ユーザーがユーザー名とパスワードを入力できるように HTML フォームを設計し、その後 PHP に入力させる必要があります。検証検査。
以下の例は 2 つの設定のチェックを示していますが、理論的には上記のユーザー名とパスワードのチェックと本質的に変わりません。
/* $PHP_AUTH_USER と $PHP_AUTH_PW の値を確認します */
if ((!isset($PHP_AUTH_USER)) || (!isset($PHP_AUTH_PW)) {
/* いいえ値: ダイアログ ボックスを表示するヘッダーを送信します */
header('WWW-Authenticate: Basic realm="My Private Stuff"');
echo '認証が必要です。';
exit ;
} else if ((isset($PHP_AUTH_USER)) && (isset($PHP_AUTH_PW))){
/* 値にはいくつかの値が含まれているため、それらが正しいかどうかを確認します */
if (($ PHP_AUTH_USER != "validname") || ($PHP_AUTH_PW != "goodpassword")) {
/* 入力されたユーザー名が間違っているか、入力されたパスワードが間違っている場合は、ダイアログ ボックスを表示させるヘッダーを送信します。 */
header ('WWW-Authenticate: Basic realm="My Private Stuff"');
echo '認証が必要です。'
} else if (( $PHP_AUTH_USER == "validname") || ($PHP_AUTH_PW == "goodpassword")) {
/* 両方の値が正しい場合、成功メッセージを出力します */
echo "
あなたは許可されています!< ;/p>";
}
}
?>
ファイルベースの保護を使用している場合、これはディレクトリを確実に保護するセキュリティブランケットではないことに注意してください。これはほとんどの人にとって明らかですが、ポップアップ ダイアログ ボックスと特定のディレクトリの保護を脳が結び付けている場合は、このプロセスを認識するために懸命に努力する必要があります。
http://www.bkjia.com/PHPjc/315569.html