2016-08-14 3 views
-2

phpでユーザが自分の電子メールアドレスとパスワードを入力するクエリを作成し、データベースから一致した電子メールとパスワードがあればデータベースから行を取得する必要があります。どうやってやるの?ユーザー名またはパスワードのいずれかが間違っている場合は、それに従ってメッセージを印刷する必要があります。電子メールのパスワード条件を使用してデータベースからレコードを取得するにはどうすればよいですか?

+1

投稿が広すぎるため、投稿を閉じる必要があります。 – Ivan

答えて

-1

私は擬似コードで次のように行くだろう:

authentication()機能は、アクセス権を付与するためのパスワードを電子メールで比較
if(authentication(email, password)) { 
    phpQuery(); 
} else { 
    alert(); 
} 

0

パスワードはデータベースにプレーンテキストとして保存しないでください。パスワードのハッシュをお読みください。

最も簡単な例:

function passwordHash($username, $password){ 
    $hash = $password; 
    for($i = 0; $i < 10000; $i++){ 
     $hash = md5($hash . $username); // we use username as salt 
    } 
    return $hash; 
} 

$username = mysqli_real_escape_string($_POST['username']); 
$hash = passwordHash($username, $_POST['password']); 

$sql = "SELECT * FROM `users` WHERE username='$username' and password='$hash'"; 
$query = mysqli_query($sql); 
if(mysqli_num_rows($query) != 0){ 
    // successfull login 
}else{ 
    // login failed 
} 

もちろん、あなたが同じハッシュ関数を使用してフォームをサインアップするべきです。また、私はmysql接続を初期化しませんでした。

+0

あなたはMD5を使用しないでください。http://security.stackexchange.com/questions/19906/is-md5-considered-insecure PHPは仕事をする独自の機能を持っています – Ivan

+0

準備文を使用してください! SQLインジェクションについて読む:http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php – Ivan

+0

みんな、私は最も簡単な解決策を書いた。 md5の繰り返しを10000回使用し、mysqli_real_escape_stringを使用したことに注意してください。 – Reptile

関連する問題