Pengguna PHP 5.5 kadang-kadang menghadapi nilai pulangan palsu yang tidak dijangka daripada fungsi password_verify().
Pertimbangkan kod berikut coretan:
// get result row (as an object) $result_row = $result_of_login_check->fetch_object(); // using PHP 5.5's password_verify() function to check if the provided password fits // the hash of that user's password if (password_verify($_POST['user_password'], $result_row->user_password_hash)) { // ... }
Walaupun mengesahkan bahawa nilai $_POST['user_password'] dan $result_row->user_password_hash adalah betul, password_verify() terus kembali palsu.
Isu ini biasanya timbul kerana panjang lajur yang tidak mencukupi untuk menyimpan kata laluan cincang dalam pangkalan data. Manual PHP mengesyorkan menggunakan lajur dengan kapasiti sekurang-kurangnya 255 aksara, kerana kata laluan yang dicincang boleh melebihi 60 aksara panjangnya.
Untuk menyelesaikan masalah ini, pastikan lajur pangkalan data yang digunakan untuk menyimpan kata laluan yang dicincang mempunyai panjang yang mencukupi. Mengemas kini takrifan lajur kepada panjang 255 atau lebih harus menangani isu tersebut dan membenarkan password_verify() berfungsi dengan betul.
Atas ialah kandungan terperinci Mengapakah `password_verify()` PHP Mengembalikan Palsu Walaupun Bukti Kelayakan Betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!