PHP スクリプト作成の 8 つのヒント (5)_PHP チュートリアル

WBOY
リリース: 2016-07-13 17:20:52
オリジナル
741 人が閲覧しました

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 Authorization Required.; ;

} 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 "

許可されています!

";
}
}
?>





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

http://www.bkjia.com/PHPjc/532524.html

www.bkjia.com

tru​​e
http://www.bkjia.com/PHPjc/532524.html

技術記事 PHP を使用したユーザー認証 スクリプトごとにパスワード保護を実装したい場合は、header() 関数を $PHP_AUTH_USER および $PHP_AUTH_PW グローバル変数と組み合わせて使用​​できます...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート