シンプルなインタラクティブな 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を使用してユーザーの本人確認を行う方法を詳しく紹介します。
次の例では、2 つの変数 $PHP_AUTH_USER と $PHP_AUTH_PW を使用して、参加者が合法であるかどうかを確認し、参加を許可します。この例では、ログインを許可されるユーザー名とパスワードのペアはそれぞれ 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 が無効です。";
else
{
echo "ようこそ tnc!";
で実際のリファレンスでは、上記のコード スニペットで明らかなユーザー名とパスワードのペアを使用することはほとんどなく、代わりにデータベースまたは暗号化されたパスワード ファイルを使用してアクセスします。
6.3 指定された検証情報に基づいてユーザーの身元を確認する
まず、次のコードを使用して、ユーザーがユーザー名とパスワードを入力したかどうかを判断し、ユーザーが入力した情報を表示します。
if (!isset($PHP_AUTH_USER)) {
header('WWW-Authenticate: Basic realm="My Private Stuff"');
header('HTTP/1.0 401 Unauthorized'); ;エコー '承認。'; PW< ;br>
認可タイプは次のとおりです: $PHP_AUTH_TYPE
あなたは許可されています!
"http://www.bkjia.com/PHPjc/317018.html