2017-10-03 3 views
-1

Hier ist der Code. Ich denke, das Problem ist nur in bcrypt. oder etwas da bitte hilf mir das herauszufinden.Mit BCrypt mit PHP und MYSQLi. Ich versuche mich anzumelden, aber es funktioniert nicht

md5 ist heute tot. Es tut mir leid Im nood von diesem 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

Remove @ aus dem Code wird es alle Fehler unterdrücken und nicht zeigen irgendeinen Fehler. –

+0

Ihr Problem besteht darin, dass Sie das Passwort hashen, das Sie zu überprüfen versuchen. Tu das nicht. Sehen Sie sich die richtigen Beispiele für die Verwendung von 'password_verify' an. – deceze

Antwort

0

Entfernen Sie @ von Ihrem Code. Auch persönlich würde ich sehen, wie Sie Ihre Variablen/sql groß schreiben, es ist allgemein akzeptiert, dass Sie entweder camelCase oder Unterstriche verwenden.

Auch, wenn ich mich nicht irre, machen Sie nicht wirklich den Aufruf der Datenbank, nur die Abfrage einrichten. Statt:

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

Ich würde schreiben (ohne Flucht, wie ich normalerweise meine eigene Funktion für das schreiben):

$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

Vielen Dank für diese tolle Idee. Ich werde es versuchen. –

Verwandte Themen