Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Dodatkowe odświeżenie podczas logowania
benzulli
post
Post #1





Grupa: Zarejestrowani
Postów: 112
Pomógł: 0
Dołączył: 3.07.2013

Ostrzeżenie: (0%)
-----


  1. <?php
  2. ?>
  3. <body>
  4. <?php
  5. if($_SESSION['logged'])
  6. {
  7. ?>
  8. To info wyskakuje, kiedy jesteś zalogowany.
  9. <form method="post">
  10. <input type="submit" value="Wyloguj" name="logout">
  11. </form>
  12. <?php
  13. if($_POST['logout'])
  14. {
  15. echo '<meta http-equiv="refresh" content="0">';
  16. }
  17. }
  18. else
  19. {
  20. ?>
  21. To info wyskakuje, kiedy nie jesteś zalogowany (wraz z formularzem). </br>
  22. <form method="post">
  23. <input type="text=" name="email">
  24. <input type="password" name="password">
  25. <input type="submit" name="login" value="Zaloguj">
  26. </form>
  27. <?php
  28.  
  29. require_once "connect.php";
  30. $connect = @new mysqli($host, $db_user, $db_password, $db_name);
  31. if ($connect->connect_errno!=0)
  32. {
  33. echo "Error: ".$connect->connect_errno;
  34. }
  35. else
  36. {
  37. if($_POST['login'])
  38. {
  39. $email = htmlentities($_POST['email']);
  40. $password = htmlentities(md5($_POST['password']));
  41.  
  42. $ask = sprintf("SELECT * FROM accounts WHERE email='%s' AND password='%s'", mysqli_real_escape_string($connect,$email), mysqli_real_escape_string($connect,$password));
  43. if($result = @$connect->query($ask))
  44. {
  45. if($result->num_rows == 1) {
  46. $array = $result->fetch_assoc();
  47. $_SESSION['logged'] = true;
  48. $_SESSION['username'] = $array['email'];
  49. $_SESSION['role'] = $array['role'];
  50. $result->close();
  51. }
  52. else
  53. {
  54. echo "Błędne hasło/nazwa użytkownika.";
  55. }
  56. }
  57. }
  58.  
  59. $connect->close();
  60. }
  61. }
  62. ?>
  63. </body>
  64. </html>
  65. <?php
  66. ?>


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łę:
  1. echo '<meta http-equiv="refresh" content="0">';


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ć.

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
benzulli
post
Post #2





Grupa: Zarejestrowani
Postów: 112
Pomógł: 0
Dołączył: 3.07.2013

Ostrzeżenie: (0%)
-----


Po naciśnięciu przycisku pojawia się:

  1. ["logged"]=> &bool(true)


natomiast, gdy jestem zalogowany, znaku ampersand nie ma, jest sama wartość bool(true). Z tego co wyczytałem, oznacza to, że zmienna tak jakby jest ta sama, lecz przyjmuje inną wartość (choć dlaczego potem jest bool(true)) to nie mam pojęcia.

Dzięki wielkie Pyton_000 za dotychczasową pomoc (IMG:style_emoticons/default/smile.gif)

Ten post edytował benzulli 27.05.2015, 20:15:10
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 22:29