2017-10-31 32 views
7

Czy istnieje możliwość, aby dwa dane użytkownika miały inny czas oczekiwania/wygaśnięcia? Powiedzmy, że pierwsze dane "param_1" wygasły w ciągu 1 dnia, a "param_2" wygasło w ciągu miesiąca. Jak to zrobić z biblioteką sesji CI. Coś, co może być jak tenWyróżnij limit czasu sesji w kodzie sygnaturowym

$this->session->set_userdata('param_1', 86400); // seconds in a day 
$this->session->set_userdata('param_2', 2592000); // seconds in a month 
+0

Proszę wyjaśnić konkretny problem lub dodać dodatkowe informacje, aby dokładnie zaznaczyć, czego potrzebujesz. Jak jest napisane, trudno powiedzieć dokładnie, o co prosisz. Zobacz stronę [How to Ask] (https://stackoverflow.com/help/how-to-ask), aby uzyskać pomoc w wyjaśnieniu tego pytania. – Tpojka

+0

Może to ci pomoże https://stackoverflow.com/questions/520237/how-do-i--preview-a-php-session-after-30-minutes/1270960#1270960 –

Odpowiedz

7

ten możliwy jest poprzez "Tempdata":

$this->session->tempdata($key, $value, $validForTime); 

Jednak, pojedyncza sesja nie powinna trwać dłużej niż kilka godzin, może dziennie. Jeśli chcesz, aby pewna zmienna utrzymywała się dłużej, sesje są absolutnie niewłaściwym narzędziem do tego.

+0

moim celem jest wiedzieć, czy użytkownik został wylogowany z powodu wygaśnięcia jego sesji logowania lub po prostu dlatego, że osoba celowo się wylogowała lub prawdopodobnie nigdy wcześniej się nie zalogowała. Tak więc mam pomysł, aby utworzyć jedną bardzo długotrwałą zmienną sesji, oddzieloną od sesji logowania w celu rozróżnienia sprawy. Stamtąd odpowiedni komunikat zostanie wyświetlony użytkownikowi. Masz pomysł, jak to zrobić? Co do Tempdaty, która wydaje się obiecująca, ale wydawało się, że jest odpowiednia tylko na sesję krótkoterminową, nie jest pewna maksymalnej wartości, jaką może pomieścić – Va1iant

+1

To zdecydowanie [problem XY] (https://meta.stackexchange.com/a/66378/204788). Pomysł, który masz, nie jest nawet możliwy. – Narf

+0

Bardzo proste po prostu dodaj do sklepu kolejną wartość w sesji po ręcznym wylogowaniu. –

5

Byłoby to możliwe tylko po ustawieniu pliku cookie na kliencie w innej domenie niż normalna z dłuższą datą wygaśnięcia i sprawdzeniu, czy zamiast danych sesji. W bardziej praktyczny sposób, używając ajax .get na stronie do konkretnego adresu URL, który weryfikuje oba pliki cookie bez uruchamiania sesji (ponieważ sesja może już wygasnąć).