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%)
-----


No rozumiem, ale według tego, co powiedziałeś, powinno działać dobrze, a problem z wylogowaniem nadal jest.

  1. <?php
  2.  
  3. require_once "connect.php";
  4. $connect = @new mysqli($host, $db_user, $db_password, $db_name);
  5. if ($connect->connect_errno!=0)
  6. {
  7. echo "Error: ".$connect->connect_errno;
  8. }
  9. else
  10. {
  11. if($_POST['login'])
  12. {
  13. $email = htmlentities($_POST['email']);
  14. $password = htmlentities(md5($_POST['password']));
  15. $ask = sprintf("SELECT * FROM accounts WHERE email='%s' AND password='%s'", mysqli_real_escape_string($connect,$email), mysqli_real_escape_string($connect,$password));
  16. if($result = @$connect->query($ask)) // szuka usera, ktory ma taki sam email i haslo w bazie
  17. {
  18. if($result->num_rows == 1)
  19. {
  20. $array = $result->fetch_assoc();
  21. $_SESSION['logged'] = true;
  22. $_SESSION['username'] = $array['email'];
  23. $_SESSION['role'] = $array['role'];
  24. $result->close(); }
  25. else
  26. {
  27. echo "Błędne hasło/nazwa użytkownika.";
  28. }
  29. }
  30. }
  31.  
  32. $connect->close();
  33. }
  34. if($_POST['logout'])
  35. {
  36. }
  37. ?>
  38. <!DOCTYPE HTML>
  39. <html lang="pl">
  40. <head>
  41. <meta charset="utf-8" />
  42. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  43. <link rel="stylesheet" type="text/css" href="css/styles.css">
  44. <title></title>
  45. </head>
  46.  
  47. <body>
  48. <?php
  49. if($_SESSION['logged'])
  50. {
  51. ?>
  52. To info wyskakuje, kiedy jesteś zalogowany.
  53. <form method="post">
  54. <input type="submit" name="logout" value="Wyloguj">
  55. </form>
  56. <?php
  57. }
  58. else
  59. {
  60. ?>
  61. To info wyskakuje, kiedy nie jesteś zalogowany (wraz z formularzem). </br>
  62. <form method="post">
  63. <input type="text=" name="email">
  64. <input type="password" name="password">
  65. <input type="submit" name="login" value="Zaloguj">
  66. </form>
  67. <?php
  68. }
  69. ?>
  70. </body>
  71. </html>
  72. <?php
  73. ?>
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: 15.10.2025 - 12:14