Stworzyłem skypt rejestracji, logowania oparty na sesjach. Aktualnie pracuje nad podskyptem, który ma za zadanie pozwolić użytkownikowi zmienić swoje hasło.
Problem: Sesja korzysta z dwóch zmiennych $login i $haslo do sprawdzania czy użytkownik jest zalogowany czy też nie. Po zmianie hasła (czyli aktualizacji bazy danyc MySQL w nowe hasło) sesja jest przerwana, użytkownik wylogowany i trzeba sie na nowo zalogowac z nowym hasłem. Jakieś solucje jak uaktualnić sesje, żeby użytkownik nie został wylogowany?
Formularz zmiany hasła:
<form method=post action=index.php?id=changepassword&akcja=wykonaj> Aktualne haslo: <input maxlength="32" type="password" name=ahaslo> Nowe hasło: <input maxlength="32" type="password" name=bhaslo> Powtórz nowe hasło: <input maxlength="32" type="password" name=chaslo> <input type="submit" value="Zarejestruj"> </form>
Skrypt zmiany hasła
<?php $nick = $_SESSION['nick']; $haslo = $_SESSION['haslo']; echo '<br>Nie byłeś zalogowany albo zostałeś wylogowany<br><a href="index.php">Strona Główna</a><br>'; exit; } $user = mysql_fetch_array(mysql_query("SELECT * FROM uzytkownicy WHERE `nick`='$nick' AND `haslo`='$haslo' LIMIT 1")); exit; } // tresc dla zalogowanego uzytkownika ?> <?php $akcja = $_GET['akcja']; if ($akcja == "wykonaj") { $chaslo = substr($_POST['chaslo'],0,32); // pobiera hasło z formularza, nowe, zeby porównać czy oba są te same $komunikaty = ''; if (!$ahaslo || !$bhaslo || !$chaslo ) { $komunikaty .= "Musisz wypełnić wszystkie pola!<br>"; } if ($mdahaslo != $haslo) { $komunikaty .= "Twoje aktualne haslo jest niepoprawne.<br>"; } if ($spr1 < 4) { $komunikaty .= "Nowe hasło musi mieć przynajmniej 4 znaki<br>"; } if ($bhaslo != $chaslo) { $komunikaty .= "Hasła się nie zgadzają ...<br>";} if ($komunikaty) { echo ' <b>Zmiana hasła nie powiodła się</b><br> '.$komunikaty.'<br>'; } else { //jesli wszystko jest ok zmienia haslo, kttore jest zaszyfrowane i zmienia w bazie danych. mysql_query("UPDATE `uzytkownicy` SET haslo='$mdbhaslo' WHERE nick='$nick'") or die("Nie można zmienic hasła!"); } } ?>
Skrypt działa lecz, nastepuje po nim wylogowanie.
Pozdrawiam
