Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Usuwanie ciasteczka sesyjnego
Forum PHP.pl > Forum > Przedszkole
hausner15
Witam mam pytanie jak w temacie.

Próbuję usuwać ciacho sesyjne

session_destroy();

ale nie usuwa on całkowicie ciastka.

Próbowałem usuwać też poprzez setcookie z czasem ujemnym ale nie działa mi to.

Proszę pomóżcie.
Lion_87
moze razem::

Kod
session_unset();
session_destroy();
Wieviór
  1. <?
  2. setcookie('nazwa', , strtotime('-365 days'));
  3. ?>


Musi działać ;]
hausner15
Sposób 1 to próbowałem już dawno i nic...

A sposób Wieviora jakoś mi nie działa - nie wiem czemu....

Macie może jeszcze jakieś pomysły??
Wieviór
Przepraszam, literówka, spróbuj teraz:

  1. <?
  2. setcookie('nazwa', strtotime('-365 days'));
  3. ?>


Musi działać ;]
hausner15
Hmm to co napisałeś towrzy mi ciasteczko z unixową datą rok wcześniejszą smile.gif.

Próbowałem z dodaniem pola wartość na "" ale nic to nie daje - cały czas ciasteczko sesyjne siedzi.

Jest mi to potrzebne bo chciałem do swojego skryptu logowania dodać możliwość automatycznego logowania - poprostu ciastko sesyjne miało zostawać na np. rok, ale w takim wypadku nie mogę tego zrobić bo ciastko zostanie po kliknięcu na wyloguj i nie będzie można zalogować się "normalnie".
Wieviór
Pokaż coś więcej kodu, u mnie jak robię to moim sposobem, to działa, więc może coś inaczej w kodzie jest.

Moment, w którym tworzysz ciastko, i jak próbujesz je usunąć.
smietek
Pewnie w ciachach zostają Ci jest wartości zmiennych sesyjnych.
  1. <?php
  2. unset(nazwa_zmiennej);
  3. //Przykładzik
  4. unset($_SESSION[nick]);
  5. ?>

I tyle, nie ma już zmiennej.
hausner15
smietek usunąć zmienne z sesji umiem ale chodzi mi o usunięcie całego ciastka - wszystko się obija o czas ważności sesji. Ale może inaczej - czy da radę przestawić czas ważności sesji?? tzn przestawić ważność ciastka, np. że ktoś się zalogował, sesja trwa godzinę, przez 30minut user nic nie robił i jak kliknie gdzieś to znowy ma czas 1 godzinę - może trochę namieszałem ale chyba wiadomo o co chodzi
smietek
Ale czy tobie chodzi o sesje, czy o ciasteczka. Przecież sesje USUWAJĄ się od razu po zamknięciu przeglądarki (chyba, że zmienisz to w php.ini).
hausner15
No więc tak - chodzi mi o usunjięcie ciasteczka które tworzy sesja. Chodzi to że jak ktoś się u mnie loguje to może wybrać czy do zamknięcia przeglądarki, czy autologowanie. Przy autologowaniu jest tworzona sesja z czasem do przodu o jakiś rok, więc można to nazwać autologowaniem. Problem nastaje kiedy ktoś będzie chciał zrezygnować z tej opcji. Spróbuje on się wylogować i zalogować na nowo bez tej opcji, ale wtedy zaloguje go na tą samą sesje, która jest ważna do x czasu.

Więc musiałbym przy wylogowywaniu kompletnie usuwać sesje - razem z ciastkiem.
Kicok
  1. <?php
  2.  
  3.  
  4. if( isset( $_GET['session_stop'] ) )
  5. {
  6. $sessName = session_name();
  7.  
  8.  
  9.  
  10. setcookie( $sessName, "", time() - 3600 );
  11.  
  12. echo 'Session cookie removed';
  13. }
  14. else
  15. {
  16.  
  17. echo '<b>sessID = </b>' . session_id();
  18. }
  19.  
  20.  
  21. ?>
  22.  
  23. <br /><br /><br /><hr />
  24. <a href="?">Loopback</a><br /><br />
  25.  
  26. <a href="?session_stop">Session stop</a>

Sprawdź czy ID sesji zmienia się, gdy zamykasz przeglądarkę i czy się zmienia, gdy wchodzisz na ?session_stop



Jednak taki sposób autologowania nie jest najlepszy. Lepiej byłoby gdybyś podczas logowania z zaznaczonym [autologowaniem] utworzył nową sesję oraz ciasteczka z wartościami:
1) userID = $userID
2) hash = md5( $userPASS . $salt )

i przy ponownym wejściu użytkownika na stronę porównujesz informacje z ciasteczka z informacjami zapisanymi w bazie danych. Jeśli sie zgadzają to tworzysz mu nową "zwykłą" sesję i ewentualnie odświeżasz ciasteczko (żeby przedłużyć okres ważności). Jeśli się nie zgadzają - przerzucasz użytkownika do formularza z logowaniem.
hausner15
Kicok twój pomysł mi sie podoba i rzeczywiście powinien być lepszy. Zrobie to tak jak mówisz.

Wszystkim dzięki i pozdrawiam!
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.