Anonymní profil David – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil David – Programujte.comAnonymní profil David – Programujte.com

 

Příspěvky odeslané z IP adresy 2001:1ae9:19e:c200:a5ea:8...–

David
PHP › PHP - změna hesla - nefukční…
30. 6. 2017   #216890

#1 David
Omlouvám se byla to jen moje nepozornost :) 

Pro info: Chyba byla v argumentu u funkce: 

$changePassword = User::changePassword($username,$oldPassword,$newPassword);

Změněno na

$changePassword = User::changePassword($username,$newPassword);
David
PHP › PHP - změna hesla - nefukční…
30. 6. 2017   #216889

Ahoj,

prosím o radu, nevíte proč se mi po změně hesla nedaří přihlásit pod novým heslem ? 

Samozřejmě nejde ani to nové heslo zadat a změnit, musim dávat stále to první.

changepassword.php

<?php 
        $formValid = new Security;

        if(isset($_POST['changepass'])) {
            $username = $_SESSION['username'];
            $oldPassword = $formValid->validForm($_POST['oldpassword']);
            $newPassword = $formValid->validForm($_POST['newpassword']);
            $confirmPassword = $formValid->validForm($_POST['confirmnewpassword']);
            $checkPassword = User::passwordVerify($username,$oldPassword);
            if($checkPassword) {
                if($confirmPassword == $newPassword) {
                    $changePassword = User::changePassword($username,$oldPassword,$newPassword);
                    if($changePassword) {
                        echo "<br /><center>Změna hesla proběhla úspěšně</center><br />";
                    } 
                } else {
                    echo "<br /><center>Potvrzovací heslo se neshoduje s novým.</center><br />";
                } 
            } else {
                echo "<br /><center>Staré heslo se neshoduje.</center><br />";
            }
        }
?>

<?php if(isset($_SESSION['username'])) { ?>
<form name="changepassword" method="post" action="">  
    <input type="password" name="oldpassword" class="input-original" placeholder="Staré heslo" />
    <input type="password" name="newpassword" class="input-original" placeholder="Nové heslo" />
    <input type="password" name="confirmnewpassword" class="input-original" placeholder="Potvrdit nové heslo"/>
    <button class="btn" type="submit" name="changepass">Změnit heslo</button>
</form>
<?php } else { 
        echo "Uživatel není přihlášen";
      }
?>

User.php

    public static function passwordVerify($username,$password){
        $query = Database::run("SELECT * FROM users WHERE username = '".$username."'");
        $result = mysqli_fetch_array($query);
        if(password_verify($password, $result['password'])) {
            return TRUE;
        } else {
            return FALSE;
        }
    }

    public static function changePassword($username,$newPassword) {
        $hashed_password = self::hash($newPassword, ['cost' => 12]);
        $hash = Database::run("UPDATE users SET password = '".$hashed_password."' WHERE username = '".$username."'");   
        return $hash;
    }

Díky moc za rady.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032019 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý