ホームページ >php教程 >php手册 >PHP スクリプトに関する 10 のヒント (5)

PHP スクリプトに関する 10 のヒント (5)

WBOY
WBOYオリジナル
2016-06-13 12:41:181125ブラウズ

PHP によるユーザー認証
スクリプトごとにパスワード保護を実装したい場合は、header() 関数を $PHP_AUTH_USER および $PHP_AUTH_PW グローバル変数と組み合わせて使用​​し、基本認証スキームを作成できます。典型的なサーバーベースの認証要求/応答ラウンドは次のようになります。

1. ユーザーが Web サーバーにファイルを要求します。ファイルが保護領域内にある場合、サーバーは応答ファイルのヘッダーに 401 (不正なユーザー) 文字列を追加して応答します。

2. ブラウザが応答を確認すると、ユーザー名/パスワードのダイアログ ボックスが表示されます。

3. ユーザーはダイアログ ボックスにユーザー名とパスワードを入力し、[確認] ボタンをクリックしてこの情報をサーバーに送信します。

4. ユーザー名とパスワードが有効な場合、現在認証されているユーザーが保護領域内にいる限り、保護されたファイルがユーザーに表示されます。上記の認証プロセスはすべて有効です。



単純な PHP スクリプトは、適切な HTTP ヘッダーを送信することで HTTP 認証要求/応答システムをエミュレートし、クライアントの画面にユーザー名/パスワードのダイアログを自動的に表示できます。 PHP は、ユーザー入力ダイアログ情報を $PHP_AUTH_USER 変数と $PHP_AUTH_PW 変数に保存します。これらの変数を使用すると、非準拠のユーザー名/パスワード チェックのリストをテキスト ファイル、データベース、または指定した場所に保存できます

注: $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"'); (' HTTP/1.0 401 Unauthorized');
echo '認証が必要です。'

} else if ((isset($PHP_AUTH_USER)) && (isset($PHP_AUTH_PW)) ){

/* 値にはいくつかの値が含まれているため、それらが正しいかどうかを確認してください */

if (($PHP_AUTH_USER != "validname") || ($PHP_AUTH_PW != "goodpassword ")) {
/* 入力されたユーザー名が間違っているか、入力されたパスワードが間違っている場合は、ヘッダーを送信してダイアログ ボックスを表示します */
header('WWW-Authenticate: Basic realm ="私のプライベートなもの"');
echo '認証が必要です。';
exit;
} else if (($PHP_AUTH_USER ==) "validname") || ($PHP_AUTH_PW == "goodpassword")) {
/* 両方の値が正しい場合、成功メッセージを出力します */
echo "

許可されています!< ;/p>";
}
}
?>

ファイルベースの保護を使用している場合、これはディレクトリを確実に保護するセキュリティブランケットではないことに注意してください。これはほとんどの人にとって明らかですが、ポップアップ ダイアログ ボックスと特定のディレクトリの保護を脳が結び付けている場合は、このプロセスを認識するために懸命に努力する必要があります。


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