Sie überprüfen, ob die Post-Werte für das Passwort festgelegt sind (was immer der Fall sein wird, da dieses Formularelement immer übermittelt wird). Anstatt einfach zu prüfen, ob diese Werte gesetzt sind, vergewissern Sie sich, dass sie nicht leer sind. use empty() Verwenden Sie bei Vergleichen auch nicht das Wort "AND", sondern den Operator "&&".
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>";}
}
Ich sehe mir den falschen Codeabschnitt an. Der obige Ratschlag ist ein guter Ratschlag, aber Ihr Problem liegt hier:
Wenn die Passwortfelder leer sind, werden diese niemals gleich sein, also if ($oldpassword==$oldpassworddb)
wird immer als falsch ausgewertet.
Versuchen Sie es
if ($oldpassword==$oldpassworddb && !empty($_POST['oldpassword']))