PHP を使用して HTTP 認証をシミュレートする_PHP チュートリアル

WBOY
リリース: 2016-07-21 16:09:35
オリジナル
985 人が閲覧しました

スクリプトごとにパスワード保護を実装したい場合は、header() 関数と $PHP_AUTH_USER および $PHP_AUTH_PW グローバル変数を組み合わせて、基本的な認証メカニズムを作成できます。通常のサーバーベースの認証要求/応答プロセスは次のとおりです:


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

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

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

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))) {

/ * Null 値 :テキストボックスを生成するデータヘッダーを送信 */

header('WWW-Authenticate: Basic realm="My Private Stuff"');

header('HTTP/1.0 401 Unauthorized');

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"');

header('HTTP/1.0 401 Unauthorized');

echo 'Authorization Required.';

exit;

} else if(($ php_auth_user == "validname")||($ php_auth_pw == "goodpassword")){

======================== ===================================' /p>";

}

}

? >

ファイルベースの保護を使用している場合、この方法ではディレクトリに包括的なセキュリティが提供されないことに注意してください。 。これはほとんどの人にとって明白かもしれませんが、ダイアログ ボックスのポップアップと特定のディレクトリの保護を脳が結び付けている場合は、さらに詳しく考える必要があります。 。

Julie Meloni は、i2i Interactive のテクニカル ディレクターであり、Linux およびオープンソース コミュニティの強力な推進者です。彼女は PHP やその他のテクノロジに関する多数の書籍を執筆しており、CNET Builder.com に長年貢献している専門家です。


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

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