ホームページ  >  記事  >  バックエンド開発  >  PHP 初心者向け (7)_PHP チュートリアル

PHP 初心者向け (7)_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 16:00:421086ブラウズ

シンプルなインタラクティブな 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

";

}

?>

説明:
isset() 関数は、変数に値が割り当てられているかどうかを判断するために使用されます。変数値が存在するかどうかに応じて、true または false を返します。
header() 関数は、特定の HTTP ヘッダーを送信するために使用されます。 header() 関数を使用する場合は、実際の出力を生成する HTML または PHP コードの前に必ずこの関数を呼び出してください。

上記のコードは非常に単純で、ユーザーが入力したユーザー名とパスワードを実際の値に基づいて効果的に検証するわけではありませんが、少なくとも PHP を使用してクライアント側で入力ダイアログ ボックスを生成する方法は理解できています。

次に、指定された認証情報に基づいてユーザーの本人確認を行う方法を見てみましょう。コードは次のとおりです。


if (!isset($PHP_AUTH_USER)) {

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

header('HTTP /1.0 401 権限がありません');

exit (isset($PHP_AUTH_USER)) {

if (($PHP_AUTH_USER != "admin") || ($PHP_AUTH_PW != "123")) {

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

header('HTTP/1.0 401 Unauthorized');

echo '認証が必要です.';

exit;

} else {

echo "

あなたは許可されています!

"

}

?>ユーザーの場合 ユーザー名とパスワードが入力されている場合は、対応するダイアログ ボックスがポップアップ表示され、ユーザーに ID 情報の入力を求めます。その後、ユーザーが入力した情報が指定されたユーザー アカウント admin/123 と一致するかどうかを判断して、ユーザーにアクセス権を付与するか、正しい情報の再入力を促します。この方法は、すべてのユーザーが同じログイン アカウントを使用するサイトで機能します。

6.4 もう一つの簡単なパスワード検証

Windows 98 で PHP スクリプトを作成して実行する場合、または Linux でデフォルト設定に従って PHP を CGI プログラムとしてインストールする場合、上記の PHP は使用できません。プログラムは検証機能を実装するために使用されます。このため、Wubian は別の簡単なパスワード検証方法を提供します。あまり実用的ではありませんが、学習には適しています。
$password = "123";

// パスワードを確認する
if($pass != $password)
{
echo "パスワードを管理</ title></head><body>"; <br>echo "<form method="post" action=$PHP_SELF>"; <br>echo "管理パスワードを入力してください:<br>"; <br>echo "< ;input type="password" name="pass">"; <br>echo "<input type="submit" value="Continue">"; <br>echo "</form></body> ;< ;/html>"; <br>} <br>else <br>{ <br>echo "<html><head><title>おめでとうございます、パスワード検証に合格しました";
echo "< ;script>";
echo 'window.location="http://gophp.heha.net/test/index.php3"';
# パスワード検証後に転送されたページ
echo "< /script>";

}
?>

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

tru​​ehttp://www.bkjia.com/PHPjc/317018.html技術記事シンプルなインタラクティブな Web サイトを構築する (3) 6. パスワード認証 自分の写真コレクションを Web サイトに掲載し、親しい友人だけに見せたい場合は、パスワード認証が必要になるかもしれません...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。