php - password_verify keeps returning false and I can't find answer anywhere -
password verify returns false. i've seen every answer here, none of helped. password field varchar(255). when var_dump password database, shows string(60) , password correct function still returns false. here code stores in database:
if(empty($_post['pass'])) {     $passerr = "password required!";     $errors[] = "pass error"; } else {     $pass = test_input($_post["pass"]);      if(!preg_match("/^(?=.*[a-za-z])(?=.*\d)[a-za-z\d]{8,}$/", $pass)) {         $passerr = "password not formed";         $errors[] = "pass error";     } else {         $pass_hashed = password_hash($pass, password_default);      } } $hash_ver = md5(rand(0, 1000)); $status = ""; $stm = $conn->prepare("insert user values(?, ?, ?, ?, ?, ?, ?, ?)");  $stm->bind_param("sssssssi", $id, $pass_hashed, $email, $fname, $lname, $hash_ver, $status, $id_role);  $stm->execute(); echo strlen($pass_hashed); and part of login script
if(count($array) != 0) {     echo "<script>alert('ima gresaka')</script>"; } else {      include('connectionfile/connection.php');       $stmt = $conn->prepare("select `name`,`last_name`,`status_verif`,`email`,`password` user `email`=?");     $stmt->bind_param("s", $email);     $stmt->execute();      if($res = $stmt->get_result()) {         $count = $res->num_rows;          if($count == 1) {              $row = $res->fetch_assoc();             $passwordb = $row['password'];              //echo "<p>".$passwordb."</p>";              $verify = password_verify($pass, $passwordb);              if($verify) {                 echo "<script>alert('password match')</script>";             } else {                 var_dump($verify);                 var_dump($passwordb);                 echo "<script>alert('password doesnt match')</script>";             }          } else {             echo "<script>alert('0 rows')</script>";         }      } else {         echo "<script>alert('no rows @ all')</script>";     }  } 
there two possible reasons. :
- 1) - $pass = test_input($_post["pass"]);- the function - test_input()- $_post['pass']string, unknown user. also, value of- $passnot declared in second code block.
- 2) - $stm = $conn->prepare("insert user values(?, ?, ?, ?, ?, ?, ?, ?)"); $stm->bind_param("sssssssi", $id,$pass_hashed, $email,$fname,$lname, $hash_ver,$status, $id_role);- the value inserting not inserted correct sql column or value extracting sql not correct column, maybe you're extracting , comparing - md5hash inserted?
it helpful if can show example output, such you'revar_dump values state. 
it helpful show how $pass set in second code block test_input in first code block.  
various parts of code improvement.
additionally, think logic structure -- if $pass doesn't fit preg_match? still inserted database. need catch these sorts of flow issues.  
read how display php error logs, or better yet, dump them file read in ide.
Comments
Post a Comment