Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Czas trwania sesji - możliwe sposoby, gdy session_set_cookie_params nie działa
Najki
post
Post #1





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 12.02.2004
Skąd: Poznań

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


Proszę o podanie wszystkich możliwych sposobów na ustawienie sesji na OKREŚLONY w skrypcie czas, gdy session_set_cookie_params nie działa, a nie mam dostępu do php.ini. Ciasteczka odpadają winksmiley.jpg.


--------------------
Go to the top of the page
+Quote Post
yeti
post
Post #2





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 12.09.2003

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


Możesz rejestrować timestamp i w momencie odświeżenia porównywać go z aktualnym czasem i czasem wygasania. Metody realizacji? Zapis do DB albo do zmiennych sesji, zależy do czego to ci jest potrzebne.


--------------------
pozdrawiam
Krzysiek
Go to the top of the page
+Quote Post
Najki
post
Post #3





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 12.02.2004
Skąd: Poznań

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


Można bardziej łopatologicznie? tongue.gif


--------------------
Go to the top of the page
+Quote Post
yeti
post
Post #4





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 12.09.2003

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


Możesz rejestrować timestamp i w momencie odświeżenia porównywać go z aktualnym czasem i czasem wygasania. Metody realizacji? Zapis do DB albo do zmiennych sesji, zależy do czego to ci jest potrzebne.

Oki, no to na zmiennych sesji:

user wchodzi na stronę, a w skrypcie:

  1. <?php
  2.  
  3.  
  4. if(!isset($_SESSION['expire']){
  5.  $_SESSION['expire'] = 60;
  6. }
  7.  
  8. if(isset($_SESSION['timestamp']){
  9.  if((time() - $_SESSION['timestamp']) > $_SESSION['expire']){
  10. // tu ładujesz kod, który chcesz wykonać jeżeli czas minął
  11.  }
  12.  else{
  13. $_SESSION['timestamp'] = time();
  14.  }
  15. }
  16.  
  17. ?>


Pisałem na kolanie, ale powinno być ok. Oczywiście wartość $_SESSION['expire'] jest dowolna, czyli taka jak Ci potrzeba smile.gif


--------------------
pozdrawiam
Krzysiek
Go to the top of the page
+Quote Post
Najki
post
Post #5





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 12.02.2004
Skąd: Poznań

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


To sprawi, że sesja będzie trwała 60 sekund, tak ?


--------------------
Go to the top of the page
+Quote Post
bregovic
post
Post #6





Grupa: Zarejestrowani
Postów: 562
Pomógł: 15
Dołączył: 8.08.2003
Skąd: Denmark/Odense

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


Chyba raczej tak:
  1. <?php
  2.  
  3.  
  4. if(!isset($_SESSION['expire'])
  5. {
  6.  $_SESSION['expire'] = 60;
  7. }
  8.  
  9. if(isset($_SESSION['timestamp'])
  10. {
  11.  if((time() - $_SESSION['timestamp']) > $_SESSION['expire'])
  12.  {
  13.  die();
  14.  }
  15. }
  16. else
  17. {
  18.  $_SESSION['timestamp'] = time();
  19. }
  20.  
  21. ?>

Teraz sesja bedzie trwala 60 sekund.


--------------------
Prank - for the fun. Mac - for the simplicity. Deviantart - for the kick.
Life is ours, We live it our way -- Metallica
Go to the top of the page
+Quote Post
yeti
post
Post #7





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 12.09.2003

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


bregovic: Hmm, nie za bardzo rozumie na czym polega Twoje usprawnienie blink.gif


--------------------
pozdrawiam
Krzysiek
Go to the top of the page
+Quote Post
bregovic
post
Post #8





Grupa: Zarejestrowani
Postów: 562
Pomógł: 15
Dołączył: 8.08.2003
Skąd: Denmark/Odense

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


Zle skonstruowales if'y:
  1. <?php
  2.  
  3. if(isset($_SESSION['timestamp']){
  4.  if((time() - $_SESSION['timestamp']) > $_SESSION['expire']){
  5. // tu ładujesz kod, który chcesz wykonać jeżeli czas minął
  6.  }
  7.  else{
  8. $_SESSION['timestamp'] = time();
  9.  }
  10. }
  11.  
  12. ?>

To spowodowaloby ni mniej ni wiecej tyle, ze jesli nieustawiona zmienna sesyjna timestamp jest ustawiona, to sprawdzamy czy sesja nie jest za stara - jesli nie jest zastara to ustawiamy timestamp. Problem polega na tym ze timestamp nigdy nie zostanie ustawiona - bo instrukcja ustawiajaca ja (na lini 8), jest zamknieta w ifie do ktorego wykonania nie dojdzie.


--------------------
Prank - for the fun. Mac - for the simplicity. Deviantart - for the kick.
Life is ours, We live it our way -- Metallica
Go to the top of the page
+Quote Post
yeti
post
Post #9





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 12.09.2003

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


Masz rację, mówiłem, że pisane na kolanie ;p
Z tym, że to rozwiązanie nie uwzględnia aktywności użytkownika. Sesja wygasa po określonym czasie. Jeśli chodziłoby o określony czas bezczynności:

  1. <?php
  2.  
  3.  
  4. if(!isset($_SESSION['expire']){
  5.  $_SESSION['expire'] = 60;
  6. }
  7.  
  8. if(isset($_SESSION['timestamp']){
  9.  if((time() - $_SESSION['timestamp']) > $_SESSION['expire']){
  10. // tu ładujesz kod, który chcesz wykonać jeżeli czas minął
  11.  }
  12.  else{
  13. // jeśli aplikacja ma wylogowywać po określonym czasie BEZCZYNNOŚCI
  14. $_SESSION['timestamp'] = time(); 
  15.  }
  16. }
  17. else{
  18.  $_SESSION['timestamp'] = time();
  19. }
  20.  
  21. ?>


--------------------
pozdrawiam
Krzysiek
Go to the top of the page
+Quote Post
Najki
post
Post #10





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 12.02.2004
Skąd: Poznań

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


To w końcu najlepiej którego z tych skryptów użyć, aby zalogować użytkownika na dobę? tongue.gif


--------------------
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: 19.08.2025 - 03:46