Má vytvořená session nastavenou dobu platnosti? Kolik minut?
Používám totiž session k vytvoření příznaku přihlášení (vše funguje jak má), ale po určitě době, kdy je stránka otevřená během psaní vzkazu na té stránce (asi tak 15-20 minut), zřejmě vyprší onen příznak, protože se stránka chová, jako by se uživatel nepřihlásil, tudíž je třeba se znovu nahlašovat... :(
Dá se to ve skriptu PHP nějak nastavit, třeba na 1 hodinu? Dík za info.
session_cache_expire nebo neco takoveho
; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.
session.gc_maxlifetime = 1440
Fajn. Mám následující kód, kterým nastavím kešování a platnost:
session_cache_limiter('private'); // private nebo private_no_expire?
session_cache_expire(60); // 1 hodina platnosti
session_start();
if (!session_is_registered("promenna") || $_SESSION["promenna"]<>"ok"):
header("location: login.php");
endif;
Když dám za půl hodiny obnovit (F5) stránku, na kterou jsem se přihlásil a jako příznak přihlášení uložil do proměnné "promenna" hodnotu "ok", přesměruje mě to na login.php, čili jeden z výrazů není platný.
Nápady?
<HTML>? nejak tomu nechapu,ale jak psal mira.. prodlouzeni platnosti se provadi pres GC (garbage collection)</HTML>
Jakým PHP příkazem se to ale provede? Pokud vím, je to nastavené v PHP.ini na serveru WZ, ale k tomu souboru se já nedostanu, ne?
Bych se sakra divil... :)
Doba trvání SESSION závisí též na době 'života' příslušného COOKIE-souboru (ukládá se tam identifikátor SESSION), nemá-li je uživatel zakázané (naprostá většina nikoliv). Dobu života souboru COOKIE lze nastavit následujícím příkazem PHP:
session_set_cookie_params(3600);
// Parametr v závorce udává požadovanou dobu 'života' COOKIE v sekundách (z v tomto případě tedy 1 hodina; 86400 pro 1 den atd.)
Důležité upozornění:
==============
Všechna nastavení týkající se SESSIONs se musí logicky provádět PŘED příkazem session_start(); a PŘED JAKÝMKOLI výstupem do prohlížeče!
Měj se a snad Ti mé rady pomohou,
Jirka
Pro: Jirka
Dík za tip, fungovalo to však jen při zkrácení doby na např. 1 minutu (session_set_cookie_params(60)), ale víc (session_set_cookie_params(3600)) než těch 24 minut (které jsou nastavené v php.ini u položky "session.gc_maxlifetime = 1440" a které ze skriptu nemůžu změnit ani pomocí ini_set()) bohužel ne.
Po 24 minutách je prostě cookie neplatná, tudíž i proměnná v té session, a skript se přesměruje na přihlašovací formulář... :-/
tak holt na webu napis, at pisou vzkazy rychleji :) a treba tam dej javascriptovy odpocitavani 24 minut :)
No, to máš pravdu, že prodloužením životnosti COOKIE více než 24 minut nedostaneš. Ale to zas nejni tak málo ne? Taky nevím, jak tuhle dobu týkající se přímo SESSION prodloužit. :(
P.S.: Na WZ maj nastavenu dobu jen 24 minut asi proto, aby jim nedokonalé skripty (a navychovaní uživatelé) zbytečně nezaplňovali paměť s proměnnýma důležitýma pro chod SESSION, jinak fakt netuším...
A nebo použít pro jistotu javascriptovou samo-aktualizaci příslušné www-stránky jednou tak za 20 minut...