2017-05-22 1 views
0

Ich habe einfache Login-System, für die ich bycrypt für Sicherheit jetzt die Logik ist einfach Ich habe jede Variable wiederholt alles sieht gut aus meine Spalte db ist auch varchar(255) so habe ich keine Einschränkung Problem, außerdem habe ich viele andere Lösungen versucht, aber vergeblich, hier ist mein Codepassword_verify funktioniert nicht trotz versuchen alle Lösungen bycrypt()

Der ursprüngliche Benutzername in DB gespeichert ist admin und das Passwort ist admin123 ich lief password_hash('admin123', PASSWORD_BCRYPT) Funktion, um ein Passwort zu generieren, das ich kopiert und eingefügt in der Datenbank!

function validate($data){ 
     $this->db->select("username,password"); 
     $this->db->from('admin'); 
     $query = $this->db->get(); 
     $res= $query->result(); 
     $db_username= $res[0]->username; 
     $db_password= $res[0]->password; 

     $user_username= $data['login_username']; 
     $user_password= $data['login_password']; 

     $user_password=password_hash($user_password, PASSWORD_BCRYPT); 

     if($db_username==$user_username){ 
       //returns true 
       if (password_verify($db_password, $user_password)) { 
         echo "1";//doesnot execute 
       } 
     } 
     else 
     { 
      echo "false"; 
     }  
} 

irgendwelche Empfehlungen?

Antwort

2

Sind Sie sicher, dass die Parameter in der richtigen Reihenfolge an password_verify übergeben werden? Die Beschreibung des Verfahrens in der docs sagt es umgekehrt ist:

boolean password_verify (string $password , string $hash) 

Da Ihr Hash aus der db kommt, sollten Sie wahrscheinlich es so sein vorbei:

password_verify($user_password, $db_password) 
+0

perfekten Mann! danke weiter so die gute arbeit ... :) –

3

password_verify() nimmt die Klartext Passwort als erstes Argument - kein Hash des Passwortes!

Entfernen Sie die Leitung mit dem Anruf zu password_hash(). Und wie von cristianorbs erwähnt, sollte der Hash aus der Datenbank das zweite Argument sein.

(Sie können auch den Benutzernamen als Parameter an die Abfrage übergeben wollen - andernfalls werden Sie nur in der Lage sein, ein Admin-Benutzer zu haben.)

+0

perfekter mann! Danke, mach weiter so ... :) –

Verwandte Themen