Autor Zpráva
quatzael
Profil
Nějak mi na serveru zkrátili trvání SESSION. Když jsem psal na support, kde si to můžu nastavit, tak mi odepsali, abych si to nastavil přímo ve scriptu. Ale já vůbec nevím jak. To musím někam vložit do všech scriptů? A úplně na začátek po session_start nebo můžu kamkoli? Nejde to někde nastavit jedním skriptem?


Ještě trochu jinak. Nemůže mít zkrácení trvání session na svědomí prohlížeč? Jak se zdá tak mi to i zruší všechny javascritový sessiony (sessionStorage)..
quatzael
Profil
No dělá mi to jak v IE tak i ve Chromu, takže to prohlížečem asi nebude..
adacio
Profil
Pokud můžeš přepisovat hodnoty PHP ini v .htaccess souboru:

php_value session.gc_maxlifetime 3600

pokud ne tak na začátku php scriptu/ů:

ini_set('session.gc_maxlifetime', 3600);

hodnota je ve vteřinách, takže todle je pro jednu hodinu


Ale podle: http://php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime
V případě, že dva scripty ukládají session do stejneho adresáře, bude je čistit ten, který má nastavenou kratší dobu.
Takže ideálně si ještě musíš změnit hodnotu: session.save_path.
quatzael
Profil
adacio:
Díky moc za odpověď. Přepisovat hodnoty PHP ini v .htaccess souboru bohužel nelze:o(

pokud ne tak na začátku php scriptu/ů:
Na začátku znamená co, ještě před session_start()?

Takže ideálně si ještě musíš změnit hodnotu: session.save_path.
No, tak tohle asi nebudu potřebovat. Ale pro jistotu.. Kam mám tohle vložit, taky na začátek před session_start()?

A co tam mám napsat za cestu, to si můžu něco vymyslet? Jako např.:
session.save_path(/tmp/)
adacio
Profil
Ano, na začátku myslím před, session_start()

session.save_path musí být nastaveno na nějaký scriptem zapisovatelný adresář.
/tmp/ bývá výchozí hodnota, takže pokud to chceš změnit bude to chtít asi jinou cestu:

ini_set('session.save_path', '/tmp/my_sessions/');
quatzael
Profil
Testuju v PHP skriptech to ini_set('session.gc_maxlifetime', 86400);, ale nefunguje to. Pořád se to odhlašuje asi po 5 minutách.
Kubo2
Profil
quatzael:
Možno to bude krátkou expiračnou dobou pre cookie, do ktorého sa ukladá session identifikátor. Viď session.cookie_lifetime
quatzael
Profil
Kubo2:
No, ale to by se snad projevovalo jenom u jednoho prohlížeče, ne? Teď je to u všech stejný, za 5 minut konec. Ještě před několika dny to fungovalo úplně normálně..
jenikkozak
Profil
Ne, to by se projevovalo u všech prohlížečů. Podívej se, jakou platnost má cookie, kterou session vytváří.
quatzael
Profil
jenikkozak:
Jak to zjistím?
quatzael
Profil
Tak jsem tam dal na začátek: ini_set('session.cookie_lifetime', 0); a zdá se, že to teď funguje. Tak snad to už nebude dělat problémy.
Díky za pomoc.


No tak teď se to zase po...lo a zničeho nic se sessions ztratily, i přesto že jsem s tím momentálně pracoval.. stačil refresh..


No tak to prostě už zase nefunguje.. Chvíli se zdálo, že to zabralo a teď je to zas úplně stejný. Furt se to odhlašuje..
jenikkozak
Profil
Toto nastavení musíš použít vždy před vypsání všech stránek, jinak může být cookie smazána po vypršení výchozí omezené platnosti.
quatzael
Profil
jenikkozak:
To jsem samozřejmě udělal. Všiml jsem si, že problém byl jen u Chrome a Mozilly. V IE to už normálně fungovalo, potom co jsem tam vložil to: ini_set('session.cookie_lifetime', 0);

Teď to ale už jede (zdá se) všude. Tak možná sem ty prohlížeče nerestartoval nebo já fakt nevím..
quatzael
Profil
Tak já nevím, už to zase nefunguje.. IE se zdá být ok, ale Chrome a Mozilla ne.
smid83
Profil *
Ahoj mam dotaz k tomu ini_set('session.save_path', '/tmp/my_sessions/');jsem v SESSION uplný začátečník

udělal jsem stranku s nazvem zkouska.php a vni mam
<?php
session_start();
$_SESSION[`a`] = 'halo';
?>
<a href="halo.php?<?php echo SID; ?>">další stránku</a>.
a druhou stranku kde se session zobrazi halo.php

session_start();
  echo $_SESSION[`a`];
A chtěl bych jak mám udělat aby se vytvořil nějakej soubor a uložilo se to vtom
a naopak jak se z toho da pak číst
zkusil jsem před session_start(); dátini_set('session.save_path', '/tmp/my_sessions/');A vubec to nic nedělá jako kdyby to tam nebylo.Všude píšou že se to musí nějak nastavit jenže nikde nepíšou co, kde a jak?

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: