Autor Zpráva
leonek
Profil
Zdravím. Mám problém s dobou trvání session. V jedom souboru mám toto:

<?php
ob_start();
ini_set('session.gc_maxlifetime', 24 * 60 * 60);
ini_set('session.cache_expire', 24 * 60 * 60);
ini_set('session.cookie_lifetime', 24 * 60 * 60);

session_set_cookie_params(24 * 60 * 60);

session_start();
?>


Bohužel při přepínání mezi dvěma stránkami se mi tak jako tak po půl hodině session smaže.
Pravděpodobně tam bude chybět ještě nějaký parametr nebo nastavuji špatně?
Jozin
Profil *
Ahoj,

nebudu ti teda radit s tímto, protože takhle jsem to nikdy nedělal a tak nevím jistě, co se má/nemá nastavit, ale já to vždy řešil nějak takto:

<?php
session_start();

if(isset($_SESSION['time']) && $_SESSION['time'] > time()) //pokud session existuje a zároveň je čas do odhlášení větší než aktuální čas
{
  $_SESSION['time'] = time()+(24*60*60); //posunu čas zase o jeden den dopředu
  echo "Jsi přihlášený";
} else
{
  session_destroy(); //zlikviduju session
  echo "Jsi odhlášený";
}
?>


snad ti to pomůže, Jozin.
leonek
Profil
Děkuji :) Ale mě jde spíše o jednu konkrétní proměnnou v košíku - $_SESSION['kosik']. Potřebuju aby v této proměnné vydrželi data na serveru alespoň jeden den.
Problém nastává hlavně když přejdu na jinou stránku a jsem na ni min 30 minut. Pak když se vrátím do košíku tak je prázdný.
Nevím jak by tvoje řešení šlo aplikovat na tuto proměnnou aby zároveň nezpůsobila její destrukci při úpravě hodnoty.
Jozin
Profil *
<?php
//kosik.php
session_start();
if(isset($_SESSION['time']) && $_SESSION['time'] > time()) //pokud session existuje a zároveň je čas do odhlášení větší než aktuální čas
{
  $_SESSION['time'] = time()+(24*60*60); //posunu čas zase o jeden den dopředu
  var_dump($_SESSION['kosik']); //nahradí se výpisem košíku
} else
{
  session_destroy(); //zlikviduju session
  echo "Košík je prázdný";
}

//příklad přidávání věcí do košíku
$_SESSION['kosik'][] = $item; //$item je nejspíš pole s informacemi o věci (budeš muset vyřešit duplicitu tzn jedné věci například 5 kousků)

?>

Pokaždé, když příjde člověk do košíku, tak se jeho doba existence prodlouží o jeden den.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: