<?php ?> <body> <?php if($_SESSION['logged']) { ?> To info wyskakuje, kiedy jesteś zalogowany. <form method="post"> <input type="submit" value="Wyloguj" name="logout"> </form> <?php if($_POST['logout']) { } } else { ?> To info wyskakuje, kiedy nie jesteś zalogowany (wraz z formularzem). </br> <form method="post"> <input type="text=" name="email"> <input type="password" name="password"> <input type="submit" name="login" value="Zaloguj"> </form> <?php require_once "connect.php"; $connect = @new mysqli($host, $db_user, $db_password, $db_name); if ($connect->connect_errno!=0) { } else { if($_POST['login']) { $ask = sprintf("SELECT * FROM accounts WHERE email='%s' AND password='%s'", mysqli_real_escape_string($connect,$email), mysqli_real_escape_string($connect,$password)); if($result = @$connect->query($ask)) { if($result->num_rows == 1) { $array = $result->fetch_assoc(); $_SESSION['logged'] = true; $_SESSION['username'] = $array['email']; $_SESSION['role'] = $array['role']; $result->close(); } else { } } } $connect->close(); } } ?> </body> </html> <?php ?>
Sprawa ma się następująco: kiedy loguję się na stronę i naciskam przycisk "zaloguj", to po odświeżeniu nadal pokazuje się pusty formularz, a dopiero jak znowu refreszne, wtedy już odczytuje, że sesja "jest". To samo z wylogowaniem, jak zniszczę sesję, to dalej jestem przez jedno odświeżenie strony "zalogowany". Otóż problem da się rozwiązać wpisując magiczną regułę:
lecz mnie interesuje jak rozwiązać ten problem (bo coś czuję, ze bardzo łatwo da się to zrobić) nie stosując po prostu dodatkowego odświeżenia. Według mnie, wszystko powinno działać, bo jak ustawisz sesję, wysyłasz formularz, strona się refreszuje i powinno już być ok, a tymczasem trzeba kolejny raz zrefreszować.