シンプルなインタラクティブな Web サイトを構築する (3)
6. パスワード検証
おそらく、写真コレクションを Web サイトに掲載し、親しい友人だけに見せたいと考えている場合、パスワード検証プログラムが必要です。
6.1 HTTP検証に基づく
PHPを使用してパスワード検証を実装するにはどうすればよいですか?短い PHP コードを使用して、関数 header() を使用して HTTP ヘッダーを送信することで認証を強制することができます。これにより、クライアントのブラウザーにユーザー名とパスワードを入力するためのダイアログ ボックスが表示されます。 PHP では、クライアント ユーザーが入力した情報は、サーバーに送信された後、3 つのグローバル変数 $PHP_AUTH_USER、$PHP_AUTH_PW、および $PHP_AUTH_TYPE に自動的に保存されます。これらの変数を使用すると、実装がデータ ファイルまたはデータベースに保存するユーザー アカウント情報に基づいてユーザーの ID を認証できます。
ただし、ここでユーザーは、Apache モジュール モードで実行している場合にのみ、PHP スクリプトが 3 つの変数 $PHP_AUTH_USER、$PHP_AUTH_PW、$PHP_AUTH_TYPE を使用できることに注意する必要があります。 PHPをCGIモードで使用している場合、HTTPによる認証機能は実装できません。
6.2 次に、PHPを使用してユーザーの本人確認を行う方法を詳しく紹介します。
次の例では、$PHP_AUTH_USER と $PHP_AUTH_PW という 2 つの変数を使用して、参加者が合法であるかどうかを検証し、入場を許可します。この例では、ログインを許可されるユーザー名とパスワードのペアはそれぞれ tnc と Nature です:
if(!isset($PHP_AUTH_USER))
{
Header("WWW-Authenticate: Basic realm="My Realm " ");
Header("HTTP/1.0 401 Unauthorized");
echo "ユーザーがキャンセルボタンを押した場合に送信するテキスト"
}
else
if ( !($PHP_AUTH_USER=="tnc") && $PHP_AUTH_PW=="nature") )
{
// ユーザー名とパスワードの組み合わせが間違っている場合は、再認証を強制します
Header("WWW-Authenticate: Basic realm="My Realm""); "HTTP /1.0 401 無許可
echo" エラー: $ php_auth_user/$ php_auth_pw が無効です。 "; & gt; 参照では、上記のスニペットのような明示的なユーザー名とパスワードのペアは使用されませんが、代わりにデータベースまたは暗号化されたパスワードが使用されます。ファイルにアクセスします。
6.3 指定された検証情報に基づいてユーザーの身元を確認する
まず、次のコードを使用して、ユーザーがユーザー名とパスワードを入力したかどうかを判断し、ユーザーが入力した情報を表示します。
if (!isset($PHP_AUTH_USER)) {
header('WWW-Authenticate: Basic realm="My Private Stuff"');
header('HTTP/1.0 401 Unauthorized');認証が必要です。';
exit;
}
else {
echo "
このユーザー名を入力しました: $PHP_AUTH_USER
次のパスワードを入力しました: $PHP_AUTH_PW
認証の種類は次のとおりです: $ PHP_AUTH_TYPE
以上、路上での PHP 初心者のための運転スキル (7) を紹介しました。これは、PHP チュートリアルに興味のある友人にとって役立つことを願っています。