Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zniszczenie sesji
Forum PHP.pl > Forum > Przedszkole
yalus
Witam

borykam sie oto z takim problemem, kod skryptu jest następujący:

  1. //plik ze skryptem do logowania login.php
  2. <?php
  3. if ($_GET['user']=="uzytkownik1")
  4.  {
  5.  $_SESSION['username']=$_GET['user'];
  6.  $_SESSION['authuser']=1;
  7.  header("location: index.php");
  8.  exit();
  9.  }
  10. else echo sprobuj_jeszcze_raz();
  11. ?>
  12.  
  13. //index.php
  14. <?php
  15. if (!isset($_SESSION['authuser']))
  16. {
  17. echo"Zakaz wstepu";
  18. exit();
  19. }
  20.  
  21. echo "jestes zalogowany jako: ".$_SESSION['username'];
  22.  
  23. ?>


wszystko dziala tak jak powinno tzn. podaje nazwe uzytkownika i po poprawnym jej wprowadzeniu zostaje przeniesiony do strony index.php i widze napis jestes zalogowany jako: uzytkownik1

chodzi mi o to ze chcac otworzyc plik index.php bez uprzedniego zalogowania powinienem ujzec napis zakaz wstępu niestety tak sie nie dzieje pojawia mi sie text jestes zalogowany jako: uzytkownik1 (nazwa uzytkownika z poprzedniej sesji)

zmienna register_global jest wylączona chociaz tak samo jest przy jej włączeniu
wprowadzilem rowniez session_unset() ale to również nie pomaga.
z tego co doczytalem to sesja jest automatycznie niszczona kazdorazowo przy zamykaniu przegladarki a co za tym idzie wszystkie zmienne sesyjne zostaja zresetowane

w czym tkwi błąd czy jest ktoś w stanie mi to wyjaśnić?

pozdrawiam yalus
mike
Najpierw usuwasz zmienne sesyjne, potem je tworzysz. Nic dziwnego że są potem one widoczne.
Jak chcesz się ich pozbyć to zrób to po ich utworzeniu.

A poza tym do zamknięcie sesji lepiej uzyć session_destroy()
yalus
hmm,

chodzi o to ze uzywajac session_unset() mam na celu wyzerowanie wszystkich zmiennych przed ich ustawieniem

a co do mojego pytania to nie jestem pewien czy je zrozumiales, chodzi mi o to ze logujac sie na strone index.php poprzez plik login.php musze podac prawidlowa nazwe uzytkownika w wyniku czego do zmiennej authuser zostaje przypiasna wartosc 1 nastepnie zostaje przekierowany do strony index.php gdzie odpowiednia funkcja sprawdza czy zmienna authuser jest ustawiona jezeli nie to nie mam prawa przegladac tej strony. jezeli wszystko poszlo ok wchodze na stronke i ogladam jej zawartosc itp. i teraz: zamykam wszystki okna przegladarki (sesja powinna zostac zniszczona automatycznie - chyba ze sie myle) nastepnie probuje otworzyc plik index.php (bez uprzedniego logowania) i co sie dzieje, zmienna authuser dalej jest ustawiona na 1 i moge wejsc na strone bez zalogowania sie. jak sie tego pozbyc??
lukir
Spróbuj tak (dodaj plik logout.php):

  1. //plik ze skryptem do logowania login.php
  2. <?php
  3. if ($_GET['user']=="uzytkownik1")
  4.  {
  5.  $_SESSION['username']=$_GET['user'];
  6.  $_SESSION['authuser']=1;
  7.  header("location: index.php");
  8.  exit();
  9.  }
  10. else echo sprobuj_jeszcze_raz();
  11. ?>
  12.  
  13. //index.php
  14. <?php
  15. if ((!isset($_SESSION['authuser']))||($_SESSION['authuser'] != 1))
  16. {
  17. echo"Zakaz wstepu";
  18. exit();
  19. } else {
  20. echo "jestes zalogowany jako: ".$_SESSION['username'];
  21. }
  22. ?>
  23.  
  24. //logout.php
  25. <?php
  26. if ((!isset($_SESSION['authuser']))||($_SESSION['authuser'] != 1))
  27. {
  28. echo"Zakaz wstepu";
  29. exit();
  30. } else {
  31. $logout_username = $_SESSION['username'];
  32. unset($_SESSION['authuser']);
  33. unset($_SESSION['username']);
  34. echo "wylogowano $logout_username ."
  35. }
  36. ?>
umatik
a jak zrobic session_destroy() (albo wogole logout) przy zamknieciu okna przegladarki?
NuLL
Nie da sie- byly juz o tym dyskusje.
crash
Przy zamknięciu przeglądarki (o ile ciacho sesji miało ustawiony odpowiedni czas żywotności) dostęp do sesji jest tracony więc po co kombonować z session_destroy()... Wystraczy tylko poczekać aż garbage collector pokasuje pozostałości...
umatik
a o co dokladnie chodzi z session_cache_expire(minuty) z tego co czytam ustawia sie tu zywotnosc sesji, jednak jak wpisalem session_cache_expire(1); to sesja nie zdezaktualizowala sie po minucie....
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.