Rumah > Artikel > pembangunan bahagian belakang > Mengapakah Fungsi Password_Verify() Tidak Mengesahkan Kata Laluan Dicincang?
Dalam skrip pendaftaran anda, anda menggunakan fungsi password_hash() PHP untuk menyulitkan kata laluan pengguna dan menyimpannya dalam pangkalan data . Apabila pengguna cuba log masuk, anda menggunakan password_verify() untuk membandingkan kata laluan yang dimasukkan dengan versi cincang dalam pangkalan data. Walau bagaimanapun, kata laluan tidak sepadan, menunjukkan isu dalam panggilan password_verify() anda.
password_verify() mengambil dua parameter:
Ia membandingkan kata laluan teks biasa dengan versi cincang dan mengembalikan benar jika sepadan atau palsu jika tidak.
Dalam skrip log masuk anda, anda sedang menghantar kata laluan teks biasa ($pwd) dan kata laluan yang dicincang ($kata laluan) kepada password_verify():
if(($user_id == $p_num) && (password_verify($pwd, $password))){
Walau bagaimanapun, anda juga menggunakan var_dump() untuk memeriksa pembolehubah semasa perbandingan, yang boleh mengubah nilai mereka. Output var_dump() menunjukkan bahawa kata laluan teks biasa ($pwd) sedang diubah suai kepada "1", manakala kata laluan yang dicincang ($kata laluan) kekal sama seperti yang disimpan dalam pangkalan data.
Untuk menyelesaikan isu, alih keluar panggilan var_dump() daripada kod anda dan pastikan $pwd mengandungi kata laluan teks biasa yang dimasukkan oleh pengguna semasa log masuk. Kod log masuk anda sepatutnya kelihatan seperti ini:
if(($user_id == $p_num) && (password_verify($pwd, $password))){
Atas ialah kandungan terperinci Mengapakah Fungsi Password_Verify() Tidak Mengesahkan Kata Laluan Dicincang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!