Mam problem ze skryptem odpowiedzialnym za zmianę hasła użytkownika.
W poniższym kodzie linie 7-40 odpowiadają za walidację formularza do zmiany hasła.
Formularz to linie 84-108.
Zaś w liniach 118-133 umieściłem dwa spany, w których ma wyświetlać się informacja o zmianie hasła, bądź błędzie.
Kod w zasadzie działa poprawnie, bo hasło się zmienia, jeśli spełnione są wszystkie warunki. Problem w tym, że nie wyświetlają mi się w spanach żadne informacje.
Gapię się w kod już z godzinę i nie mogę dojść co jest nie tak (IMG:
style_emoticons/default/sad.gif)
<?php
if( !isset( $_SESSION[ 'logged' ] ) ) { header( 'Location: ../index.php' ); }
if( isset( $_POST[ 'change-password-submit' ] ) ) { $validate = true;
if( $_POST[ 'old-password' ] != password_verify($_POST[ 'old-password' ], $_SESSION[ 'logged' ] [ 'password' ] ) ) {
$_SESSION[ 'change_password_error' ] = 'Stare hasło jest niepoprawne';
$validate = false;
}
if( strlen( $_POST[ 'new-password' ] ) < 8
|| strlen( $_POST[ 'new-password' ] ) > 12
) { $_SESSION[ 'change_password_error' ] = 'Nowe hasło musi mieć 8-12 znaków';
$validate = false;
}
if( $_POST[ 'new-password' ] != $_POST[ 'new-password2' ] ) {
$_SESSION[ 'change_password_error' ] = 'Nowe hasła nie są identyczne';
$validate = false;
}
if( empty( $_POST[ 'old-password' ] ) || empty( $_POST[ 'new-password' ] ) || empty( $_POST[ 'new-password2' ] ) ) { $_SESSION[ 'change_password_error' ] = 'Musisz wypełnić wszystkie pola;';
$validate = false;
}
if( $validate == false ) {
header( 'Location: profile.php' ); } else {
$password = password_hash( $_POST[ 'new-password' ], PASSWORD_DEFAULT );
try {
require_once( 'connect.php' );
$change_password = $pdo -> prepare( "UPDATE users SET password = :password" );
$change_password -> bindParam( ':password', $password );
$change_password -> execute();
} catch(PDOException $e) {
echo 'ERROR: ' . $e -> getMessage(); }
$_SESSION[ 'change_password_success' ] = 'Twoje hasło zostało zmienione';
header( 'Location: profile.php' ); }
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>
Profil użytkownika
<?php
echo $_SESSION[ 'logged' ] [ 'login' ]; ?>
</title>
<link rel="stylesheet" type="text/css" href="../css/screen.css" media="screen">
</head>
<body>
<?php
include_once( 'top.php' );
?>
<aside id="profile">
<h1>
Profil użytkownika
<?php
echo $_SESSION[ 'logged' ] [ 'login' ]; ?>
</h1>
<img src="../img/users/
<?php echo $_SESSION[ 'logged' ] [ 'avatar' ]; ?>" alt="
<?php echo $_SESSION[ 'logged' ] [ 'avatar' ]; ?>">
<table border="1">
<tr>
<td>Nazwa użytkownika: </td>
<td>
<?php echo $_SESSION[ 'logged' ] [ 'login' ]; ?></td>
</tr>
<tr>
<td>Adres e-mail: </td>
<td>
<?php echo $_SESSION[ 'logged' ] [ 'email' ]; ?></td>
</tr>
<tr>
<td>Data założenia konta: </td>
<td>
<?php echo $_SESSION[ 'logged' ] [ 'date' ]; ?></td>
</tr>
<tr>
<td colspan="2"><a href="#" id="change_password" onclick="toggle('change_password_div');">Zmień hasło</a></td>
<div id="change_password_div" style="display: none;">
<form action="profile.php" method="post">
<ul>
<li>
<label for="old-password">Stare hasło</label>
</li>
<li>
<input type="password" name="old-password" id="old-password">
</li>
<li>
<label for="new-password">Nowe hasło</label>
</li>
<li>
<input type="password" name="new-password" id="new-password">
</li>
<li>
<label for="new-password2">Powtórz hasło</label>
</li>
<li>
<input type="password" name="new-password2" id="new-password2">
</li>
<li>
<input type="submit" name="change-password-submit" id="change-password-submit" value="Zmień hasło">
</li>
</ul>
</form>
</div>
</tr>
<tr>
<td colspan="2"><a href="#" id="change_avatar">Zmień obraz konta</a></td>
</tr>
<tr>
<td colspan="2"><a href="logout.php">Wyloguj się</a></td>
</tr>
</table>
<span class="error change-password-error">
<?php
if( isset( $_SESSION[ 'change_password_error' ] ) ) { echo $_SESSION[ 'change_password_error' ]; unset( $_SESSION[ 'change_password_error' ] ); }
?>
</span>
<span class="success change-password-success">
<?php
if( isset( $_SESSION[ 'change_password_success' ] ) ) { echo $_SESSION[ 'change_password_success' ]; unset( $_SESSION[ 'change_password_success' ] ); }
?>
</span>
</aside>
<script type="text/javascript" src="../js/script.js"></script>
</body>
</html>