Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

php password_verify() hash dan pass tidak akan cocok

$2y$10$zzZCN7UlukvY2skb3ELVp.4y3Oc7NJTEsFyqdstqYxT hash hanya panjangnya 50 dan tidak valid/terlalu pendek dan seperti yang saya katakan, MySQL akan gagal secara diam-diam; pelaporan/pemeriksaan kesalahan tidak akan membantu di sini.

Panjang kolom kata sandi harus 60 (disarankan 255), jadi awalnya tidak disimpan dengan benar.

Anda perlu menghapus kolom/atau tabel kata sandi, menambah panjang kolom, dan memulai dari awal lagi.

Referensi:

Anda juga dapat mengubah kueri Anda untuk dibaca sebagai:

$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!";
}

Sunting:

Menambahkan dari komentar yang saya tinggalkan ke OP:

Fungsi verifikasi Anda perlu memiliki koneksi yang dibuat ke database Anda, itulah yang saya rasakan terjadi di sini (cakupan variabel). Jadi, Anda harus menggunakan global $con; atau meneruskan koneksi (variabel) ke fungsi Anda (yang lebih baik dalam banyak kasus).

Saya tidak tahu apakah Anda melakukan "sertakan" untuk fungsi tersebut, dan jika demikian, maka itulah masalah lainnya.

Yaitu:function VUP($con, $check, $valid){ atau function VUP($check, $valid){ global $con; - Coba keduanya. Gunakan $result = mysqli_query($con, $query) or die(mysqli_error($con)); alih-alih yang Anda miliki sekarang.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. transpos kolom ke baris

  2. LibreOffice:'com.mysql.jdbc.driver' tidak dapat dimuat

  3. Apakah ini polling panjang yang sebenarnya?

  4. Membatasi kolom untuk menerima hanya 2 nilai

  5. LAST_INSERT_ID() selalu mengembalikan 0 (RMySQL) - masalah koneksi terpisah