PHP Notice: Undefined variable: _SESSION
- vymak
- Člen | 92
Ahoj, mám tokový problém a nemůžu přijít v čem by mohla být chyba. Čas od času mi do logu skočí hláška:
`PHP Notice: Undefined variable: _SESSION in
/home/www/vymakdevel.cz/www/krbylipnik.vymakdevel.cz
/temp/cache/_Nette.FileTemplate/_templates._layout.latte-6a43e33b767770d8ea4bd9b2956622c0.php:172
@ http://www.krbylipnik.cz/…n/prihlasit/`
Vůbec nevím, v čem může být chyba protože když jdu na zmíněnou stránku tak k žádné chybě nedojde. Děje se tak většinou kolem půlnoci. Víte někdo kde by mohla být chyba?
BasePresenter
public function startup() {
parent::startup();
if (!$this->getUser()->isLoggedIn()) {
if ($this->getName() != 'Admin:Prihlasit') {
$this->redirect('Prihlasit:default');
}
} else {
$this->template->logged = TRUE;
$this->template->user = $this->getUser()->getIdentity()->getData();
}
}
public function handleOut() {
$this->getUser()->logout();
$this->flashMessage('Byl jste úspěšně odhlášen!', 'success');
$this->redirect(':Front:Homepage:default');
}
protected function checkAdminRequirments($rederict = 'Prihlasit:default') {
if (!$this->getUser()->isInRole('admin')) {
$this->flashMessage('K provedení operace nemáte potřebná oprávnění! Pokud chcete provést tuto změnu obraťte se na administrátora.', 'notice');
$this->redirect($rederict);
}
}
Díky za každou radu :)
EDIT:
Na řádku 172 z uvedeného soubotu je tento kód:
<?php Nette\Diagnostics\Debugger::barDump(array('$_SESSION' => $_SESSION), "Template " . str_replace(dirname(dirname($template->getFile())), "\xE2\x80\xA6", $template->getFile())) ?>
Editoval vymak (6. 1. 2014 0:27)
- Myiyk
- Člen | 321
Zkus si tu stránku otevřít v anonymním režimu (budeš „čistý“ od
cookies), jestli to hodí chybu.
Podle chyby to vypadá, že se nezapne session.
Můžeš to jednoduše ověřit, že se podíváš na celou chybovou hlášku a
mrkni do sekce Session, jestli vůbec existuje.
V configu se dá nastavit povinné zapínání session (https://doc.nette.org/cs/configuring#…).
Nastav autoStart: true
- vymak
- Člen | 92
Tak jsem to zkusil v anonymním okně a když zadám přímo tu adresu tak to vygeneruje tu hlášku. Pokud ale předtím navštívím libovolnou stránku a poté stránku kde to blbne již vše funguje bez problému.
Bude to tedy asi tím nezapnutím SESSION. Zkusím tam hodit ten autostart, snad to bude fungovat.
EDIT:
Tak vážně pomohlo autoStart: true
Díky moc :)
Editoval vymak (6. 1. 2014 12:29)
- Myiyk
- Člen | 321
K $_SESSION by se nemělo přistupovat přímo, pouze přes službu, např. $this->getSession(); (v presenteru)
- vymak
- Člen | 92
Tak je to moje chyba :(
Dříve jsem zkoušel přes dump v šabloně co je v SESSION a zapomněl jsem tam tohle:
<div class="main-content col11" id="main">
<script> document.documentElement.className += ' js'</script>
{dump $_SESSION}
{snippet flashes}
<div n:foreach="$flashes as $flash"
class="flash {$flash->type}">{$flash->message|striptags|lower|firstUpper} </div>
{/snippet}
{include #content}
</div>