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 '認証が必要です。';
} 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")) {
成功メッセージを出力します */ファイルベースの保護を使用している場合、このアプローチは次のとおりであることに注意してください。を確実に保護するセキュリティブランケットではありません。ディレクトリ。これはほとんどの人にとって明らかですが、ポップアップ ダイアログ ボックスと特定のディレクトリの保護を脳が結び付けている場合は、このプロセスを認識するために懸命に努力する必要があります。
上記では、acronis Disk Director Suite 10 の内容を含む、PHP スクリプトの 10 のヒント 5 を紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。