Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Znikająca sesja
Forum PHP.pl > Forum > Przedszkole
shoq
Mam problem. Niedawno zacząłem uczyć się php i "bawić" w pisanie skryptów. Ostatnio próbowałem napisać prosty skrypt logowania oparty na sesjach. Niestety, kiedy udaje mi się zalogować i utworzyć sesję, po załadowaniu strony od nowa dwukrotnie (bez wyłączania przeglądarki) sesja po prostu znika i muszę logować się na nowo.
Jak temu zapobiec?

PS To nie jest problem z session_start().
pawel81
W każdym pliku dajesz session_start, pokaż kod.
shoq
Mam to w 1 pliku. Oto kod:

  1. <?php
  2. if ($_SESSION["loged"] == true) {
  3. echo ('Jesteś już zalogowany!');
  4. }
  5.  
  6. else {
  7. echo ('<br />Zaloguj się!');
  8.  
  9.  
  10.  
  11.  
  12. if (empty($_POST["login"]) || empty($_POST["haslo"])) {
  13.  
  14.  
  15.  
  16. echo ('<form action="log.php" method="post">
  17. Login: <input type="text" name="login" maxlength="10" /><br />
  18. Hasło: <input type="password" name="haslo" maxlength="15" /><br />
  19. <input type="submit" name="ok" value="Zatwierdź" />
  20. </form> ');
  21.  
  22. echo ('<br />Podaj login i hasło.');
  23. }
  24. else if ($_POST["login"] == "admin" && $_POST["haslo"] == "12345") {
  25. echo ('<br />Zalogowałeś się.');
  26. $_SESSION["loged"] = true;
  27. }
  28. else {
  29. echo ('<form action="log.php" method="post">
  30. Login: <input type="text" name="login" maxlength="10" /><br />
  31. Hasło: <input type="password" name="haslo" maxlength="15" /><br />
  32. <input type="submit" name="ok" value="Zatwierdź" />
  33. </form> ');
  34.  
  35. echo('<br />Niepoprawny login lub hasło!');
  36. }
  37. }
  38.  
  39.  
  40. echo ('<br /><br /><br />');
  41. echo ('<form acion="log.php" method="post"><input type="submit" name="haslo" value="Wyłącz sesję"></form>');
  42.  
  43. if ($_POST["haslo"] != "12345") {
  44. $_SESSION["loged"] = false;
  45. }
  46. ?>


Kiedy usunąłem tą ostatnią instrukcję warunkową, zaczęło działać dobrze, dlaczego? Czy $_POST["haslo"] traci wartość po przeładowaniu strony?
pawel81
  1. <?php
  2.  
  3.  
  4.  
  5.  
  6. if (isset($_SESSION["loged"]) && $_SESSION["loged"] == true) {
  7. echo ('Jesteś już zalogowany!');
  8. }
  9.  
  10. else {
  11. echo ('<br />Zaloguj się!');
  12.  
  13. if (empty($_POST["login"]) || empty($_POST["haslo"])) {
  14.  
  15. echo '<form action="log.php" method="post">
  16. Login: <input type="text" name="login" maxlength="10" /><br />
  17. Hasło: <input type="password" name="haslo" maxlength="15" /><br />
  18. <input type="submit" name="ok" value="Zatwierdź" />
  19. </form> ';
  20.  
  21. echo '<br />Podaj login i hasło.';
  22. }
  23.  
  24. else if ($_POST["login"] == "admin" && $_POST["haslo"] == "12345") {
  25. echo '<br />Zalogowałeś się.';
  26. $_SESSION["loged"] = true;
  27. }
  28.  
  29. else {
  30. echo '<form action="log.php" method="post">
  31. Login: <input type="text" name="login" maxlength="10" /><br />
  32. Hasło: <input type="password" name="haslo" maxlength="15" /><br />
  33. <input type="submit" name="ok" value="Zatwierdź" />
  34. </form> ';
  35.  
  36. echo'<br />Niepoprawny login lub hasło!';
  37. }
  38. }
  39.  
  40.  
  41. echo '<br /><br /><br />';
  42. echo '<form acion="log.php" method="post"><input type="submit" name="haslo" value="Wyłącz sesję"></form>';
  43.  
  44. if (isset($_POST["haslo"])) {
  45. if ($_POST["haslo"] != "12345") {
  46.  
  47.  $_SESSION["loged"] = false;
  48. }
  49. }
  50. ?>
shoq
Dzięki, to pomogło. Głupi błąd, nie pomyślałem o tym. ;]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.