Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

php password_verify () hash và pass sẽ không khớp

$2y$10$zzZCN7UlukvY2skb3ELVp.4y3Oc7NJTEsFyqdstqYxT băm chỉ có độ dài 50 và không hợp lệ / quá ngắn và như tôi đã nói, MySQL sẽ thất bại một cách âm thầm; báo cáo / kiểm tra lỗi sẽ không hữu ích ở đây.

Độ dài cột của mật khẩu phải là 60 (đề xuất là 255), vì vậy ban đầu nó không được lưu trữ chính xác.

Bạn sẽ cần xóa cột / hoặc bảng mật khẩu của mình, tăng độ dài của cột và bắt đầu lại từ đầu.

Tham khảo:

Bạn cũng có thể sửa đổi truy vấn của mình thành:

$con = new mysqli("xxx", "xxx", "xxx", "xxx");
if ($con->connect_error) {
    die('Connect Error (' . $con->connect_errno . ') '
            . $con->connect_error);
}

$query = "SELECT `pass` FROM `user` WHERE `email`='$emailLogin'";
$result = $con->query($query);

// error checking on the query
if (!$result) {
    echo "<p>There was an error in query: $query</p>";
    echo $con->error;
}

$row_hash = $result->fetch_array();
if (password_verify($passLogin, $row_hash['pass'])) {
    echo "Success!";
}

Chỉnh sửa:

Thêm từ một nhận xét tôi đã để lại cho OP:

Chức năng xác minh của bạn cần phải có một kết nối được thực hiện với cơ sở dữ liệu của bạn, đó là những gì tôi cảm thấy đang xảy ra ở đây (phạm vi thay đổi). Vì vậy, bạn sẽ cần sử dụng global $con; hoặc chuyển kết nối (biến) vào hàm của bạn (trong hầu hết các trường hợp thì tốt hơn).

Tôi không biết liệu bạn có đang thực hiện "bao gồm" cho hàm hay không, và nếu có, thì đó là vấn đề còn lại.

Tức là:function VUP($con, $check, $valid){ hoặc function VUP($check, $valid){ global $con; - Hãy thử cả hai. Sử dụng $result = mysqli_query($con, $query) or die(mysqli_error($con)); thay vì cái bạn có bây giờ.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có một chức năng để đóng một câu lệnh được chuẩn bị sẵn mysql với PDO không?

  2. cách nhập từ MS excel vào MYSQL DB

  3. Làm cách nào để thêm vào từng hàng trong MySQL?

  4. Chèn nhiều hàng từ một biểu mẫu php vào cơ sở dữ liệu

  5. PDO với CHÈN VÀO thông qua các báo cáo đã chuẩn bị