2017-10-03 1 views
-1

ここにコードがあります。私は問題がbcryptだけであると思う。または何かが私を見つけるのを助けてください。PHPとMYSQLiでBCryptを使用する。ログインしようとしていますが、動作していません。

md5は今日死んでいます。だから、このbcryptの申し訳ありません。

<?php 
if (isset($_POST['btnLogin'])) 
{ 

    $username = $_POST['username']; 
    $password2 = password_hash($_POST['password'],PASSWORD_BCRYPT); 
     $username = stripslashes($username); 
     $username = mysqli_real_escape_string($conn,$username); 

     $result=$conn->query("SELECT * FROM admin WHERE USERNAME = '$username'") or die(mysql_error()); 

     if(!$result){ 
      echo "<script>alert('Incorrect User.');</script>"; 
      } 
     else if(!$conn) 
     { 
      die("Could not connect to database.".mysql_error()); 
     } 
     else 
     { 
      while($row = mysqli_fetch_array($result)) 
      { 
       @$ID = $row['ID']; 
       @$FULLNAME = $row['FULLNAME']; 
       @$USERNAME = $row['USERNAME']; 
     @$PICTURE = $row['PICTURE']; 
       @$PASSWORD = $row['PASSWORD']; 
       @$USER_TYPE = $row['USER_TYPE']; 
       @$ACCESS_TYPE = $row['ACCESS_TYPE']; 
      } 
      } 
     if (@$ACCESS_TYPE == '1' && password_verify($PASSWORD, $password2)) 
     { 
     $_SESSION['ID'] = $ID; 
     $_SESSION['FULLNAME'] = $FULLNAME; 
     $_SESSION['USERNAME'] = $USERNAME; 
     $_SESSION['PICTURE'] = $PICTURE; 
     $_SESSION['PASSWORD'] = $PASSWORD; 
     $_SESSION['USER_TYPE'] = $USER_TYPE; 
     $_SESSION['ACCESS_TYPE'] = $ACCESS_TYPE; 

     echo "<script>window.location.href = 'user_log_in.php' </script>";  
     } 
     elseif (@$ACCESS_TYPE == '2' && password_verify($PASSWORD, $password2)) 
     { 
     $_SESSION['ID'] = $ID; 
     $_SESSION['FULLNAME'] = $FULLNAME; 
     $_SESSION['USERNAME'] = $USERNAME; 
     $_SESSION['PICTURE'] = $PICTURE; 
     $_SESSION['PASSWORD'] = $PASSWORD; 
     $_SESSION['USER_TYPE'] = $USER_TYPE; 
     $_SESSION['ACCESS_TYPE'] = $ACCESS_TYPE; 

     echo "<script>window.location.href = 'user_log_in_mod.php'</script>";  
     } 
     else{ 
     echo "<script>alert('Incorrect Password!'); 
       </script>";  
     } 

} 
?> 
+1

削除@それはすべてのエラーをSUPRESSし、表示されませんエラーが発生しました。 –

+0

あなたの問題は、あなたが確認しようとしているパスワードをハッシュしていることです。それをしないでください。 'password_verify'の使い方の適切な例を正しく見てください。 – deceze

答えて

0

@をコードから削除してください。個人的には、変数/ SQLをどのように大文字にしているかを見ていきますが、一般的にはキャメルケースまたはアンダースコアを使用することが認められています。

私が間違っていない限り、実際にはデータベースを呼び出すのではなく、クエリを設定するだけです。 の代わりに:

$result=$conn->query("SELECT * FROM admin WHERE USERNAME = '$username'") or die(mysql_error()); 

(私は通常、そのために自分自身の関数を書くとエスケープを除く)私が書くでしょう:あなたのコードから

$query = "SELECT * FROM admin WHERE USERNAME = '{$username}' "; 
$get_users_query = mysqli_query($connection, $query); 
while($row = mysqli_fetch_assoc($get_users_query)){ 
    $ID = $row['ID']; 
    $FULLNAME = $row['FULLNAME']; 
    $USERNAME = $row['USERNAME']; 
    $PICTURE = $row['PICTURE']; 
    $PASSWORD = $row['PASSWORD']; 
    $USER_TYPE = $row['USER_TYPE']; 
    $ACCESS_TYPE = $row['ACCESS_TYPE']; 

    //found_password == matched password in database. 
    if(password_verify($password2, $PASSWORD)){ 
    //Do your stuff. 
     } 
    } 
+0

ありがとうございました。私はこれを試してみます。 –

関連する問題