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
#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() )
<?php
require_once('core/init.php');
if(!$user){
header('Location: index.php');
}
$old_pass=@md5($_POST['old_pass']);
$new_pass=@$_POST['new_pass'];
$confirm_new_pass=@$_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{
$new_pass=@md5($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 ạ?
Không biết bạn có xử lý bằng javascript không?
- Các thẻ
input
không có thuộc tínhname
. - 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.
mình gửi dữ liệu bằng ajax á bạn
Ý bạn là $new_pass
và $confirm_new_pass
không trùng khớp? Hay chỗ nào khác?
đú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!
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ỉ
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é.
Bạn nên echo $new_pass
và $confirm_new_pass
ra xem có hiện thị đúng kết quả bạn truyền vào hay ko