2016-07-14 26 views
1

Ich bekomme ein Passwort aus der Datenbank und es ist in der $password Variable mit "" (doppelte Anführungszeichen) gespeichert. Ich möchte den $password Variablenwert mit '' (einfache Anführungszeichen) ändern. Wie kann ich das ändern? Wenn ich mit einem statischen Wert teste, $password = '$2y$10$wFgLkiJbc7MQ0aY6H7bZwehm45CFlvpSBvZmHs9m8euqPmDlP0mIK'; ist es ok und das Passwort ist gültig. Mein Problem ist wie dieser Link.konvertieren String doppelte Anführungszeichen in einfache Anführungszeichen

php password_hash and password_verify issues no match

Wie $ Passwort zu lösen?

$password = $result['Password']; 

Dies ist mein Code: wegen

$get_email = $_POST['email']; 
$get_password = $_POST['password']; 

$result = $conn->prepare("select * from user where Email='$get_email'"); 
$result->execute(); 

    foreach ($result as $result) { 
     $id = $result['ID']; 
     $password = $result['Password']; 


     if (password_verify($get_password, $password)) { 
      echo 'Password is valid!'; 
     } else { 
      echo 'Invalid password.'; 
     } 

    } 
+0

Ist 'Code' zitiert? Mit der Formatierung der Frage weiß ich nicht, was Code ist und was die Frage ist. Ich weiß auch nicht, was "Code" in deiner Erklärung und deinem Titel ist. – chris85

+0

Ich bearbeite schon meine Frage. Bitte hilf mir. :) –

+0

'und "ist Zitate in Englisch. Meinst du Zitate nach Code? Wenn nicht, was meinst du mit Doppel-Code und einzigen Code? – Ivan

Antwort

0

, wenn Sie doppelte Anführungszeichen verwenden, wird es als eine Variable verwendet werden, da in der Zeichenfolge ‚$‘ war, während, wenn Sie einfache Anführungszeichen verwenden, wird es Als Char verwendet werden

+0

Wie soll ich tun Bitte zeigen Sie mir Dank –

0

Im Moment kann ich Ihnen nur eine Idee vorschlagen. Was ist mit etwas ändern Sie Ihre MySQL-Abfrage? So etwas wie

$conn->prepare("select * from user where Email='$get_email'" and `Password` = '$get_password'); 

Wenn diese Abfrage leer Ergebnis zurückgeben Sie ‚ungültig Kennwort‘ zeigen kann. Nicht sehr gute Lösung, sollte aber funktionieren.

+0

$ get_password ist Original-Passwort und nicht die gleiche in der Datenbank Passwort wegen der Hash-Funktion. :) –

+0

in diesem Fall einfach etwas wie diese verwenden $ password = password_hash ($ get_password, PASSWORD_DEFAULT); und Variable $ Passwort in Ihre MySQL-Abfrage einfügen – Dmitry

+0

Nein. Mein Problem ist so http://stackoverflow.com/questions/19855715/php- password-hash-und-password-verify-issues-no-match? answertab = votes # tab-top –

0

Ich hatte das gleiche Problem mit meinem Code. Ich erhalte die Hash-Passwortaus der Datenbank und dann die password_verify(), um es gegen eingegebenes Passwort zu verifizieren. Damit der Code problemlos funktioniert, muss das aus der Datenbank abgerufene Kennwort unter Verwendung von trim() getrimmt sein. Beispielcode hier:

public function verifylogin() { 
     //this is an array with user credentials from login form 
     $usercred = $this->input->post(); 

     //this will check in user model and return password, etc. where name is equal to entered name 
     $userdb = $this->User_model->check($usercred); 
     $userdbpass = trim($userdb[0]['pass']); //trim is very critical !!! 

     //now we check if the text pass is equal to hashed one 
     if (password_verify($usercred['password'], $userdbpass)) { 
      $sess_data = array('login' => TRUE, 'username' => $usercred['username'], 'type' => $usercred['type']); 
      $this->session->set_userdata($sess_data); 
      redirect(base_url()); 
     } else { 
      $this->session->set_flashdata('msg', 'Wrong Username or Password!'); 
      //If no session, redirect to login page 
      redirect(base_url() . 'users/login'); 
     } 
    } 
Verwandte Themen