Passwords không khớp cho dù nhập password giống nhau


Em đang sử dụng php để check xem password có khớp hay không nhưng khi em nhập passwords giống nhau ,nó vẫn báo là passwords không khớp.

copy code lên bạn nhé. Chụp ảnh mờ căm không ai nhìn được với chỉ dùng mắt dò lỗi thì mệt lắm

3 Likes

#1 là bạn thử echo cái password trong database ra, để kiểm tra mình lấy password ra đuoc chưa.

#2 là việc kiểm tra nhập lại password mới có khớp không, thì bạn nên dùng javascript để lọc ngay tại khâu nhập liệu cho nó đơn giản.

#3. Mình thấy bạn bỏ hẳn biến vào trong query, mình nghĩ là không nên. Bạn nên query thông qua PDO cho chắc ăn.

#4. PHP có hàm password_hash() và password_verify(), bạn nên thử tìm hiểu về bọn này.
Tuy vẫn chỉ là đơn giản, nhưng vẫn ngon hơn md5 một xíu.

#5. Phần if…else…if…else, ý kiến cá nhân, mình nghĩ bạn có thể đổi logic lại một xíu để cho chắc ăn hơn và cũng là dễ nhìn/quản lý các trường hợp hơn
(Hình như bạn ghi là db _> close() )

4 Likes
<?php
require_once('core/init.php');
if(!$user){
    header('Location: index.php');
}
[email protected]($_POST['old_pass']);
[email protected]$_POST['new_pass'];
[email protected]$_POST['confirm_new_pass'];
$show_alert = "<script>$('#formChangePass .alert').removeClass('hidden');</script>";
$hide_alert = "<script>$('#formChangePass .alert').addClass('hidden');</script>";
$success_alert = "<script>$('#formChangePass .alert').attr('class', 'alert alert-success');</scrit>";
if($old_pass!=$data_user['password']){
    echo $show_alert.'Incorrect old password,make sure capslock have been turned off and try again'
}else if(strlen($new_pass)<6){
    echo $show_alert.'Password is too short, please try another which is more secure';
}else if($new_pass!=$confirm_new_pass){
    echo $show_alert.'Passwords are not matching, please try again';
}
else{
    [email protected]($new_pass);
    $sql_change_pass="UPDATE users SET password='$new_pass' WHERE id_user='$data_user[id_user]'";
    $db->query($sql_change_pass);
    $db->close();
    echo $show_alert.'
    Change password successfully
    <script>
    location.reload();
    </script>
    ';
}
?>

Thắc mắc xíu, input không có name mà vẫn xài được ạ?

3 Likes

Không biết bạn có xử lý bằng javascript không?

  • Các thẻ input không có thuộc tính name.
  • Không có nút Gửi (submit).
  • form: onsubmit="return false;.

Bạn nêu cụ thể khi bạn chạy thì điều gì xảy ra.

3 Likes

mình gửi dữ liệu bằng ajax á bạn

Ý bạn là $new_pass$confirm_new_pass không trùng khớp? Hay chỗ nào khác?

2 Likes

đúng rồi bạn, mình nhập giống nhau mà vẫn bị báo là không trùng

Thế thì thử gán cứng rồi gửi xem!

3 Likes

mình đổi sang password_verify() thì nó lại chạy được, dùng toàn tử so sánh != thì không chạy, lạ nhỉ :face_with_raised_eyebrow:

mình sài ajax để gửi dữ liệu nên không cần name

Không phải là xài ajax thì không cần name, nó đang lấy dữ liệu từ form thông qua các id của thẻ input đó.
Trường hợp của bạn, pasword không khớp có nghĩa là cái điều kiện ($new_pass != $confirm_new_pass) được thỏa mãn, bạn xem lại cái id bên form, đang là confirm_new_pas (không biết có phải nó bị khuất mất 1 chữ s hay không) còn id bên file change_pass đang là confirm_new_pass, 2 id này khác nhau
Lần sau cố gắng up đầy đủ code lên nhé.

3 Likes

Bạn nên echo $new_pass$confirm_new_pass ra xem có hiện thị đúng kết quả bạn truyền vào hay ko

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?