Kontrolujete, že hodnoty příspěvku jsou nastaveny pro heslo (což budou vždy, protože prvek formuláře bude vždy odeslán). Místo toho, abyste jednoduše kontrolovali, zda jsou tyto hodnoty nastaveny, ujistěte se, že nejsou prázdné. use empty() Také při porovnávání nepoužívejte slovo "AND" a použijte operátor 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>";}
}
Dívám se na špatný kus kódu. Výše uvedená rada je dobrá rada, ale váš problém je zde:
Pokud jsou pole hesla prázdná, pak tato nebudou nikdy stejná, takže if ($oldpassword==$oldpassworddb)
bude vždy vyhodnocena jako false.
Zkuste
if ($oldpassword==$oldpassworddb && !empty($_POST['oldpassword']))