Anda memeriksa apakah nilai posting disetel untuk kata sandi (yang akan selalu seperti itu, karena elemen formulir itu akan selalu dikirimkan). Alih-alih hanya memeriksa apakah nilai-nilai itu disetel, pastikan itu tidak kosong. use empty() Juga, saat membuat perbandingan jangan gunakan kata "DAN" gunakan operator 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>";}
}
Saya melihat potongan kode yang salah. Saran di atas adalah saran yang bagus, tetapi masalah Anda ada di sini:
Jika bidang kata sandi kosong maka ini tidak akan pernah sama, jadi if ($oldpassword==$oldpassworddb)
akan selalu mengevaluasi false.
Coba
if ($oldpassword==$oldpassworddb && !empty($_POST['oldpassword']))