パスワードに投稿値が設定されていることを確認しています(そのフォーム要素は常に送信されるため、常に設定されます)。これらの値が設定されているかどうかを単に確認するのではなく、空でないことを確認してください。 empty()を使用します。また、比較を行うときは、「AND」という単語を使用せず、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>";}
}
私は間違ったコードのチャンクを見ています。上記のアドバイスは良いアドバイスですが、あなたの問題はここにあります:
パスワードフィールドが空の場合、これらは同じになることはないため、if ($oldpassword==$oldpassworddb)
常にfalseと評価されます。
試してみてください
if ($oldpassword==$oldpassworddb && !empty($_POST['oldpassword']))