sql >> Databáze >  >> RDS >> Mysql

Zaseknutý dotaz na PHP

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']))


  1. Jak zachytit chyby DB v CodeIgniter PHP

  2. MySQL 5.6 - tabulka se uzamkne, i když je použit ALGORITHM=inplace

  3. Jak mohu nahrát jednotlivé řádky CSV do různých tabulek v PHP?

  4. vyberte dotaz a počítejte na základě podmínky