Najki
10.09.2004, 16:39:16
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
10.09.2004, 17:24:43
proponuje ciasteczka

smaczne i kochane cookie's
Najki
10.09.2004, 18:21:07
Też je lubię

. Chcę jednak skorzystać z sesji.
Dalej czekam na wsparcie

.
Majdan
10.09.2004, 18:39:15
W php.ini znajdź session.gc_maxlifetime i ustaw na ile sekund chcesz.
Najki
10.09.2004, 20:58:17
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ć?
Najki
10.09.2004, 23:08:01
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
11.09.2004, 11:40:19
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
11.09.2004, 17:56:24
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

Na łamach serwisu jest ciekawy artykuł dotyczący właśnie tego zagadnienia z pełną implemntacją. Zapraszam do lektury.
pozdrawiam
anas
matid
11.09.2004, 22:43:45
<?php
$intExpiry = 60 * 60 * 24;
?>
Najki
11.09.2004, 23:16:20
@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
12.09.2004, 08:53:48
24h od momentu ostatniego wznowienia sesji, tzn.
Np. mamy 2 pliki. Pierwszy plik to sess1.php:
<?php
$_SESSION['test'] = 1;
?>
Natomiast drugi to sess2.php:
<?php
?>
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
13.09.2004, 09:09:09
Wielkie dzięki za pomoc!
yavaho
13.09.2004, 12: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.
matid
13.09.2004, 13:16:45
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
13.09.2004, 17:04:32
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
11.01.2005, 22:24:29
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
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.