2016-07-02 3 views
0

私はPHPで多くの認証を読んだことがありますが、私はあまり気にしていません。ウェブサイトのログインについてわからない

php.net

<?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']を使用します。 実際には、ログインデータを送信する他の方法と、ユーザーがログインデータを入力できるようにする別の方法です。

私はどちらを選択すべきか全然分かりません!

+0

通常、認証データはPOST要求の本文内で送信されます。 TLSが使用されていると仮定すると、データは安全でなければなりません。また、実際にusername +パスワードを格納する場合、変数を使用するのはスケーラビリティがあまりありません。 – JCOC611

+0

@ JCOC611「あまりスケーラビリティがない」とはどういう意味ですか? –

+2

数百人以上のユーザーがいる場合、サーバーはメモリ不足になり、すべてのデータをアレイに格納しようとします。通常は、ディスクに格納し(データベースを使用して)、必要なメモリだけを読み込みます。 – JCOC611

答えて

1

まず第一に、あなたはあなたのパスワードを保存する必要があります次に https://secure.php.net/manual/en/function.hash.php

をハッシュ化された、あなたは通常、POSTを介してフロントエンドからの情報を受け取ることになります最終的には、認証ヘッダに

を使用していない、セッションを使用https://secure.php.net/manual/en/intro.session.php

$_POST('user') 
$_POST('password') 

この

ような何かを3210
+0

ご回答いただきありがとうございます。これも私がしたいコンセプトです。しかし、なぜ私は認証ヘッダーを使用すべきではありませんか? –

+1

@mammutこれはアプリケーションによって使用されています。クライアント - サーバーアーキテクチャを念頭に置いてデスクトップクライアントアプリケーションを使用したい場合は問題ありません。しかし、クライアントのためにhtml、css、jsを使用する場合は、その方が簡単であり、ユーザにとっては苦労します –

関連する問題