Witam! Robię panel użytkownika. Jest pole do zmiany nick'u, i wszystko ładnie działa. Tylko mam dwa problemy z sesjami.
Otóż gdy wpisuje do tego pola jakiś nickname, działa dobrze bo zmienia mi w bazie tak jak powinno być, i gdy zmieni ten nickname wyskakuje napis 'Pomyślnie zmieniono nickname!' i tu jest problem bo gdy odświeżę stronę to ten napis zamienia się na 'Taki nickname istnieje już w bazie' ( zabezpieczeni gdy podany nickname już istnieje ). A ja chcę usunąć tą sesję czy wyczyścić żeby po odświeżeniu nie było żadnego napisu!
Problem drugi: Gdy zmienię ten nickname, nie odświeża się on na stronie głównej panelu użytkownika, tzn. na stronie głównej mam użytkownika o nazwie. np. FORUM1 potem idę i zamieniam na nickname: FORUM2 i on się nie zmienia. Dopiero się zmieni gdy się wyloguje i znów zaloguję. Czyli jak mogę odświeżyć te sesję żeby odrazu wyświetlił się zamieniony nickname?
//Change the nickname SETTINGS
if( isset($_POST['nickname_new']) ) {
//If username is less than 7 or higher than 20..
if ( (strlen($_POST['nickname_new']) < 7) || (strlen($_POST['nickname_new']) > 20) ) {
$change_username = false;
$_SESSION['message_nickname'] = "Twój nick jest nieprawidłowy! ( Musi mieć więcej niż 7 znaków a mniej niż 20 )";
}
//if the given nickname exists
$sqlSTM = $pdo->prepare("SELECT nickname FROM users WHERE nickname = :nickname");
$sqlSTM->bindParam(':nickname', $_POST['nickname_new']);
$sqlSTM->execute();
$results = $sqlSTM->fetchAll(PDO::FETCH_ASSOC);
if( count($results) > 0 ) {
$change_username=false;
$_SESSION['message_nickname']="Istnieje już konto przypisane do tego nicku!";
}
if( $change_username == true ) {
$sqlSTM = $pdo->prepare("UPDATE users SET nickname = :nickname WHERE id = :id");
$sqlSTM->bindParam(':nickname', $_POST['nickname_new'], PDO::PARAM_STR);
$sqlSTM->bindParam(':id', $_SESSION['id']);
$sqlSTM->execute();
$results = $sqlSTM->fetch(PDO::FETCH_ASSOC);
$_SESSION['message_nickname'] = "Pomyślnie zmieniono nickname!";
}
}
?>
A TUTAJ KOD TYCH NAPISÓW ( ERRORÓW ) W TAGU <HTML>
<?php if (isset($_SESSION['message_nickname'])) {
echo $_SESSION['message_nickname'];
unset($_SESSION['message_nickname']);
}?>