Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przedłużana sesja
Forum PHP.pl > Forum > PHP
Najki
Do sedna.

Użytkownik się loguje (tworzy się sesja na 24h), przy wczytaniu każdej podstrony, sesja jest odświeżana, tak aby od ostatniej akcji użytkownika trwała 24h. Dzięki temu, regularnie odwiedzający, będą ciągle zalogowani.

Jak to zrobić? (samo przedłużanie się sesji)
powder
proponuje ciasteczka winksmiley.jpg smaczne i kochane cookie's
Najki
Też je lubię smile.gif. Chcę jednak skorzystać z sesji.
Dalej czekam na wsparcie smile.gif.
Majdan
W php.ini znajdź session.gc_maxlifetime i ustaw na ile sekund chcesz.
Najki
Dzięki za podpowiedź, ale to mi nie pomaga.
Nie mam własnego serwera. Jedynie moge testować to u siebie, ale na serwerze, na którym to umieszczę, nie mam dostępu do plików konfiguracyjnych, a zmiana ich też nie podobałaby się innym klientom serwera.

Podobno można ustawić czas trwania sesji bezpośrednio w skrypcie.
Jak to wszystko mam w końcu zrobić?
q
jak juz o tym mowa to: ini_set" title="Zobacz w manualu PHP" target="_manual
Najki
OK dzięki, ALE.
Z tego co rozumiem - takie ustawienie zmieni czas trwania sesji na mojej stronie, ale wszystkich sesji. Chodzi mi o indywidualne ustawienie czasu trwania danej sesji dla każdego użytkownika osobno. Dobrze rozumiem?

Może ktoś mi doradzi jednak jak tego dokonać?
Majdan
Sprawdzasz switch'em jaki to jest user i ini_set()'em ustawiasz długość trwania sesji. Możesz zrobić też inne kryteria na podstawie sesja będzie miała inny czas trwania.
anas
Hej.

Session handler - napisz własny - do ustawiania czasu trwania sesji posłuży Ci funkcja gc - której argumentem jest właśnie czas trwania sesji smile.gif

Na łamach serwisu jest ciekawy artykuł dotyczący właśnie tego zagadnienia z pełną implemntacją. Zapraszam do lektury.

pozdrawiam

anas
matid
  1. <?php
  2. $intExpiry = 60 * 60 * 24;
  3. session_set_cookie_params( $intExpiry );
  4. ?>
Najki
@matid: jeśli użyję tego skryptu na każdej następnej podstronie, którą odwiedzi zalogowany użytkownik to odświeży czas na jaki ma być zapisana sesja? Czyli będzie ona trwała 24h od tego momentu, czy 24h od zalogowania?
matid
24h od momentu ostatniego wznowienia sesji, tzn.
Np. mamy 2 pliki. Pierwszy plik to sess1.php:
  1. <?php
  2. session_set_cookie_params( 60 * 60 * 24 );
  3. $_SESSION['test'] = 1;
  4. ?>

Natomiast drugi to sess2.php:
  1. <?php
  2. echo $_SESSION['test'];
  3. ?>


W takiej sytuacji jeśli wejdziemy na stronę sess1.php utworzymy sesję, która będzie ważna 24h od momentu ostatniego jej użycia. Natomiast jeśli po wejściu na stronę sess1.php, wejdziemy na sess2.php sesja będzie trwała 24h od odwiedzenia tej strony (sess2.php).

Z tego wynika, że jeśli chcesz tego użyć do skryptu np. logowania, wystarczy, że session_set_cookie_params umieścisz w pliku z procedurą logowania (np. login.php) a na kolejnych plikach będziesz używał normalnego session_start();
Najki
Wielkie dzięki za pomoc!
yavaho
A mozna w ten sposob ustalic czas zycia kazdej sesji indywidualnie?
Mam strone na ktorej nie uzywam ciasteczek, tylko wszystko dziala na sesjach.
I dla niektorych sesji np wykorzystywanych do licznika odwiedzin chcialbym zastosowac krotki czas, a dla innych np autologin dluzszy czas zycia.
matid
Cytat(yavaho @ 2004-09-13 13:02:02)
A mozna w ten sposob ustalic czas zycia kazdej sesji indywidualnie?
Mam strone na ktorej nie uzywam ciasteczek, tylko wszystko dziala na sesjach.
I dla niektorych sesji np wykorzystywanych do licznika odwiedzin chcialbym zastosowac krotki czas, a dla innych np autologin dluzszy czas zycia.

Tylko że ty do tego używasz jednej sesji i dwóch zmiennych sesyjnych o ile dobrze rozumiem. A te ustawienia tyczą się konkretnej sesji a nie konkretnej zmiennej.
yavaho
A tak racja, zle to sprecyzowalem.

Powiedzmy ze uzywam trzech zmiennych sesyjnych:
1) zmienna do licznika odwiedzin aby zapobiec dodawaniu licznika przy odswiezaniu strony - ta zmienna powinna byc aktywna do momentu opuszczenia strony.
2) zmienna zapobiegajaca wyslaniu kilka razy pod rzad tej samej wiadomosci z formularza - tutaj mozna by okreslic czas 1-5 min.
3) zmienna tworzona po zalogowaniu sie uzytkownika i potem wykorzystywana do autologinu - jej czas by sie ustalilo na kilkanascie dni.

A wiec to chyba nie jest mozliwe? aby ustalic czas dla kazdej zmiennej sesyjnej z osobna?
Jak ten problem mozna rozwiazac w inny sposob? Oczywiscie ciasteczka odpadaja.
Mery
Mi nie dziala zadna z tych metod, jest napisane ze one dzialaja tylko do czasu zakonczenia wykonywania danego skryptu wiec w tym przypadku nie ma chyba zastosowania.
Nie wiem czy mi sie dobrze wydaje czy mieszam teraz, niech mnie ktos poprawi smile.gif
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.