Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zniszczenie sesji
yalus
post
Post #1





Grupa: Zarejestrowani
Postów: 281
Pomógł: 0
Dołączył: 8.07.2005
Skąd: EU

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


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


--------------------
człowiek nie sznurek wszystko wytrzyma
Go to the top of the page
+Quote Post
mike
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


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()
Go to the top of the page
+Quote Post
yalus
post
Post #3





Grupa: Zarejestrowani
Postów: 281
Pomógł: 0
Dołączył: 8.07.2005
Skąd: EU

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


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??


--------------------
człowiek nie sznurek wszystko wytrzyma
Go to the top of the page
+Quote Post
lukir
post
Post #4





Grupa: Zarejestrowani
Postów: 86
Pomógł: 0
Dołączył: 6.08.2004
Skąd: Warszawa

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


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


--------------------
"Tylko myśl dojrzała i jasna daje się wypowiedzieć w słowach prostych" - prof. Witold Doroszewski
Warsztat: os: Windows XP, serwer: Apache 2.0.55, php: 5.1.4, baza danych: MySQL 4.1.7.
Go to the top of the page
+Quote Post
umatik
post
Post #5





Grupa: Zarejestrowani
Postów: 209
Pomógł: 0
Dołączył: 17.05.2002
Skąd: lodz

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


a jak zrobic session_destroy() (albo wogole logout) przy zamknieciu okna przegladarki?
Go to the top of the page
+Quote Post
NuLL
post
Post #6





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


Nie da sie- byly juz o tym dyskusje.


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
crash
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


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


--------------------
Go to the top of the page
+Quote Post
umatik
post
Post #8





Grupa: Zarejestrowani
Postów: 209
Pomógł: 0
Dołączył: 17.05.2002
Skąd: lodz

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


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....
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 23:25