2017-01-23 5 views
0

を言い続けエラー "無効な電子メールまたはパスワード!"表示され続けるが、私は入力が正しいデータであることを確認している。私のPHPのログインフォームは、私のログインフォームは次のようになり、間違ったパスワードを

データベースのパスワードがハッシュされているためですか?または私はちょうど愚かな間違いを持っ​​ていますか?

EDIT 1:

これは私が、ユーザー作成の下でパスワードのハッシュ化する前に何をすべきかです。エラーがいくつかの非常に長いテキストを生成することができますProper Password Preparation with PHP

password_hash()機能から

$uname = strip_tags($_POST['uname']); 
$upass = strip_tags($_POST['psw']); 
$phone = strip_tags($_POST['mobil']); 
$email = strip_tags($_POST['email']); 
$lat = strip_tags($_POST['lat']); 
$long = strip_tags($_POST['long']); 
$role = strip_tags($_POST['role']); 

$uname = $DBcon->real_escape_string($uname); 
$upass = $DBcon->real_escape_string($upass); 
$phone = $DBcon->real_escape_string($phone); 
$email = $DBcon->real_escape_string($email); 
$lat = $DBcon->real_escape_string($lat); 
$long = $DBcon->real_escape_string($long); 
$role = $DBcon->real_escape_string($role); 
+1

あなたは** mysqlインジェクション**を開いています! 'prepared statements'を使う必要があります。' real_escape_string() 'で十分ではありません。 – Nytrix

+0

パスワードは少なくともハッシュされていると確信しています。 元々パスワードを保存するために使用されたハッシュ方法をご存知ですか? – chop62

+2

*** [パスワードを逃さないでください](http://stackoverflow.com/q/36628418/1011527)***を確認するか、ハッシングする前に他のクレンジングメカニズムを使用してください。パスワードを変更すると、パスワードが変更され、不要な追加のコーディングが発生します。 –

答えて

1

を表示されているログインの下 Iこれは正常に動作しますが、私は、ユーザーを作る際に、エラーを持っていけない、それは(現在のデフォルトは60文字)、できるだけ大きなフィールドを作成すると、必要な長さが可能になります。次に、PHPチームはメソッドにアルゴリズムを追加しています。これは、ハッシュが成長し、成長することを意味します。また、ユーザーのパスワードまたはパスフレーズを使用する権限を制限したくない場合もあります。変更の余地を残すことが最善です。また


:あなたdon't escape passwordsていることを確認してくださいまたはハッシュする前に、それらの他の洗浄メカニズムを使用しています。そうするとはパスワードをに変更し、不要な追加のコーディングを引き起こします。

+0

私は多くを助けてくれた完璧! –

0

次のコードを見てください。

session_start(); 
require_once '../db/dbconnect.php'; //Am assuming u are using PDO 

if (isset($_POST['btn-login'])) { 

    $email = strip_tags($_POST['email']); 
    $password = $_POST['password']; 

    $query = "SELECT user_id, email, psw, FROM Users WHERE email = :email"; 
    $queryStat = $DBcon->prepare($query); 

    $queryStat->execute(['email'=>$email]); 

    $row = $queryStat->fetch(PDO::FETCH_ASSOC); 

    $encryptedPassword = $row['psw']; 

    if (password_verify($password, $encryptedPassword)) { //No need for row count 
     $_SESSION['userSession'] = $row['user_id']; 
     header('Location: student.php'); 
    }else{ 
     $msg = "<div class='alert alert-danger'> 
     <span class='glyphicon glyphicon-info-sign'></span> &nbsp; Invalid E-mail or Password ! 
     </div>"; 
    } 
} 
関連する問題