私はPHPで多くの認証を読んだことがありますが、私はあまり気にしていません。ウェブサイトのログインについてわからない
<?php
$valid_passwords = array ("mario" => "carbonell");
$valid_users = array_keys($valid_passwords);
$user = $_SERVER['PHP_AUTH_USER'];
$pass = $_SERVER['PHP_AUTH_PW'];
$validated = (in_array($user, $valid_users)) && ($pass == $valid_passwords[$user]);
if (!$validated) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
die ("Not authorized");
}
// If arrives here, is a valid user.
echo "<p>Welcome $user.</p>";
echo "<p>Congratulation, you are into the system.</p>";
?>
すなわちheader()
メソッドを使用する方法について説明は、このベストプラクティスですか、それはまた、2つのHTML要素とアクションpost
でのログインパラメータを送信AN場合はログインデータとの認証を作成するために、スタンダールされます間違っているheader('Location: ../view/wrongLogin.html')
を行うか、ログインページindex.html
にとどまる?
「username」と「pwd」の2つのHTMLタグを作成する場合は、$_SESSION['username']
と$_SESSION['pwd']
を使用する必要があります。
header(...)
を使用すると、私は$_SERVER['PHP_AUTH_USER']
と$_SERVER['PHP_AUTH_PW']
を使用します。 実際には、ログインデータを送信する他の方法と、ユーザーがログインデータを入力できるようにする別の方法です。
私はどちらを選択すべきか全然分かりません!
通常、認証データはPOST要求の本文内で送信されます。 TLSが使用されていると仮定すると、データは安全でなければなりません。また、実際にusername +パスワードを格納する場合、変数を使用するのはスケーラビリティがあまりありません。 – JCOC611
@ JCOC611「あまりスケーラビリティがない」とはどういう意味ですか? –
数百人以上のユーザーがいる場合、サーバーはメモリ不足になり、すべてのデータをアレイに格納しようとします。通常は、ディスクに格納し(データベースを使用して)、必要なメモリだけを読み込みます。 – JCOC611