Du tjekker, at postværdierne er indstillet til adgangskoden (hvilket de altid vil være, fordi formularelementet altid vil blive indsendt). I stedet for blot at tjekke, om disse værdier er indstillet, skal du sørge for, at de ikke er tomme. brug empty() Også, når du laver sammenligninger, skal du ikke bruge ordet "AND" og bruge operatoren "&&".
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>";}
}
Jeg kigger på den forkerte del af kode. Ovenstående råd er et godt råd, men dit problem er her:
Hvis adgangskodefelterne er tomme, vil disse aldrig være de samme, så if ($oldpassword==$oldpassworddb)
vil altid vurdere falsk.
Prøv
if ($oldpassword==$oldpassworddb && !empty($_POST['oldpassword']))