Bạn đang kiểm tra xem các giá trị bài đăng có được đặt cho mật khẩu không (mật khẩu sẽ luôn như vậy, vì phần tử biểu mẫu đó sẽ luôn được gửi). Thay vì chỉ kiểm tra xem các vaues đó đã được đặt chưa, hãy đảm bảo rằng chúng không trống. sử dụng rỗng () Ngoài ra, khi so sánh, không sử dụng từ "VÀ", hãy sử dụng toán tử and "&&".
if (!empty($_POST['repeatnewpassword']) && !empty($_POST['newpassword'])) {
if ($newpassword==$repeatnewpassword)
{
$querychange = mysql_query("UPDATE login SET password='$newpassword' WHERE username='$username'");
echo "<div class='successmate'><br><br><br><br><hr>Password has been changed!</hr></div><div class='successmate'><br><hr><br><h2><p><a href='index2.php'><br><br></a></p></h2></div>";
}
else {echo "<div class='results'>new password(s) dont match</div><div class='successmate'><br><br><h2><p><a href='changepassword.php'>try again?</a></p></h2></div>";}
}
Tôi đang xem sai đoạn mã. Lời khuyên trên là lời khuyên tốt, nhưng vấn đề của bạn là ở đây:
Nếu các trường mật khẩu trống thì các trường này sẽ không bao giờ giống nhau, vì vậy if ($oldpassword==$oldpassworddb)
sẽ luôn đánh giá sai.
Hãy thử
if ($oldpassword==$oldpassworddb && !empty($_POST['oldpassword']))