Du kontrollerar att postvärdena är inställda för lösenordet (vilket de alltid kommer att vara, eftersom det formulärelementet alltid kommer att skickas). Istället för att bara kontrollera om dessa värden är inställda, se till att de inte är tomma. använd empty() Använd inte ordet "AND" när du gör jämförelser och använd operatorn och "&&".
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>";}
}
Jag tittar på fel kodbit. Ovanstående råd är goda råd, men ditt problem är här:
Om lösenordsfälten är tomma kommer dessa aldrig att vara desamma, så if ($oldpassword==$oldpassworddb)
kommer alltid att utvärdera falskt.
Prova
if ($oldpassword==$oldpassworddb && !empty($_POST['oldpassword']))