Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]nie niszczy sesji
Forum PHP.pl > Forum > Przedszkole
jacusek
Witam.
Mam taki mały skrypt odpowiadający za wylogowanie:
  1. <?php
  2. if(($_POST['wyloguj'])&&($_COOKIE[''.$_SESSION['user'].'']==1)){
  3. setcookie(''.$_SESSION['user'].'', "1", time()-60, "/");
  4. echo "<center><h3>Zostałeś wylogowany!!!!!
  5. Żeby zalogować się ponownie kliknij poniższy link:<br>
  6. <a href=\"logowanie.html\">LOGOWANIE</a></center></h3>";
  7. }
  8. ?>

Logowanie jest na podstawie ciasteczek. Chciałem się dowiedzieć jak można zniszczyć także sesję. To niestety nie działa - usuwa się plik cookie, ale nie usuwa się sesja. Dodawałem na poczatku ob_start i na końcu ob_end_flush, ale to róznież nie pomaga. Cały czas pozostaje session_id
Ghost_78
mysle ze powiniennes przy wylogowywaniu uzyc unset($_SESSION);
jacusek
no to już wpadłem wczesniej i niestety to nie o to chodzi.
Ghost_78
ale zmienna $_SESSION[user] juz chyba wtedy nie istnieje ?
z tego co wiem to jezeli uzyjesz session_start to identyfikator zmiennej zostanie utworzony ale nie bedzie posiadal danych
ciekawskiii


tak miales? ja u siebie tego uzywam i dziala

i to niszczenie sesji daj przed echo
jacusek
na to też wpadłem.
@Ghost_78
rzeczywiście całą table z danymi sesyjnymi mi wywala, ale nie zmienia to faktu, że pozostaje session_id
Ghost_78
no to w czym problem ? smile.gif
tam gdzie sprawdzasz czy ktos jest zalogowany nie sprawdzaj session_id tylko np:

  1. if (isset($_SESSION['user'])){
  2. //zalogowany
  3. }else{
  4. //wylogowany
  5. }
jacusek
mnie wylogowuje i to działa, mnie interesuje dlaczego nie mogę zlikwidować tego session id
Ghost_78
  1. session_start();// tworzy session_id
  2. //ustawione session_id - widac je mimo ze do sesji nic nie przekazales numer musial byc utworzony
  3.  
  4. session_destroy();// niszczy sesje razem z session_id
  5. // zmiszczone session_id - nie widzac


tak wiec session_id jest niszczone i tylko kwestia w tym gdzie go bedziesz szukal
jezeli nie chcesz zeby session_id bylo tworzone to nie wywoluj session_start() zawsze tylko w przypadku kiedy chcesz uruchomic sesje
np:
  1. if ($logowanie){
  2. }
outsider
ten Twój mały skrypt coś jest źle napisany, nie powinno być tak ?
  1.  
  2. if(($_POST['wyloguj'])&&($_COOKIE[''.$_SESSION['user'].'']==1)){
  3. setcookie(''.$_SESSION['user'].'', "1", time()-60, "/");
  4. echo "<center><h3>Zostałeś wylogowany!!!!!
  5. Żeby zalogować się ponownie kliknij poniższy link:<br>
  6. <a href=\"logowanie.html\">LOGOWANIE</a></center></h3>";
  7.  
  8. }
  9.  

w końcu chcesz niszczyć sesje gdy ktoś chce się wylogować, a nie po każdym dojściu parsera do końca pliku smile.gif
A session_id nie możesz skasować, jeśli na początku skryptu masz session_start - to się wiąże z otwarciem nowej sesji, jeśli nie istnieje. Nowa sesja będzie miała inny session_id
ciekawskiii
Cytat(*OuTSideR* @ 8.11.2010, 18:14:25 ) *
ten Twój mały skrypt coś jest źle napisany, nie powinno być tak ?
  1.  
  2. if(($_POST['wyloguj'])&&($_COOKIE[''.$_SESSION['user'].'']==1)){
  3. setcookie(''.$_SESSION['user'].'', "1", time()-60, "/");
  4. echo "<center><h3>Zostałeś wylogowany!!!!!
  5. Żeby zalogować się ponownie kliknij poniższy link:<br>
  6. <a href=\"logowanie.html\">LOGOWANIE</a></center></h3>";
  7.  
  8. }
  9.  

w końcu chcesz niszczyć sesje gdy ktoś chce się wylogować, a nie po każdym dojściu parsera do końca pliku smile.gif
A session_id nie możesz skasować, jeśli na początku skryptu masz session_start - to się wiąże z otwarciem nowej sesji, jeśli nie istnieje. Nowa sesja będzie miała inny session_id

dlatego pisalem zeby session_destroy dal przed echo... no albo za echo:P
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.