Session proměná z obyčejného PHP do Nette
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- wentylos
- Člen | 1
Aby ses dostal k hodnote session kterou ti do ni zapsala jina aplikace, musis zajistit ze ta jina aplikace session stejne startuje jako nette. Tedy obe/vsechny aplikace ktere chcou cist/zapisovat do jedne sesession musi mit stejne nastavenou session coookie (session_name) a stejne nastaveny session save path a par dalsich veci. Paklize se tedy bavime o session ukladane na disk.
My to mame nejak takto:
<?php
//nastaveni nize musi byt stejne pro vsechny aplikace
$path = '/cesta/k/session';
$livetime = new DateTime('+ 2 month');
$sessionName = 'mojeSession';
$sessionSecured = true;
session_save_path($path);
ini_set("session.gc_maxlifetime", $livetime->format('U') - time());
session_name($sessionName);
$sessionId = Arr::get($_COOKIE, session_name(), null);
if (!is_null($sessionId)) {
session_id($sessionId);
}
session_set_cookie_params($livetime->format('U') - time(), '/', '', $sessionSecure, true);
setcookie(session_name(), session_id(), $livetime->format('U'), '/', '', $sessionSecure, true);
?>
Pak budes moci pristoupi k $_SESSION[‚name‘] jak pise Jirka.
Nette pak vsechna sva data uklada do ‚namespace‘ uvnitr $_SESSOIN pod klicem __NF, tedy $_SESSION[‚__NF‘].
Takze treba ladenka ti vzdy vypisuje pouze obsah __NF a pokud tam chces i neco mimo tento prostor, musis si ten panel v ladence upravit.
Editoval wentylos (15. 9. 2016 11:01)