Je controleert of de post-waarden zijn ingesteld voor het wachtwoord (wat ze altijd zullen zijn, omdat dat formulierelement altijd wordt ingediend). In plaats van simpelweg te controleren of die waarden zijn ingesteld, moet u ervoor zorgen dat ze niet leeg zijn. gebruik empty() Gebruik bij het maken van vergelijkingen ook niet het woord "AND" en gebruik de operator en "&&".
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>";}
}
Ik kijk naar het verkeerde stukje code. Het bovenstaande advies is een goed advies, maar uw probleem is hier:
Als de wachtwoordvelden leeg zijn, zullen deze nooit hetzelfde zijn, dus if ($oldpassword==$oldpassworddb)
zal altijd onwaar evalueren.
Probeer
if ($oldpassword==$oldpassworddb && !empty($_POST['oldpassword']))