Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: nefunguji $_SESSION

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Adam Matis
Člen
Avatar
Adam Matis:12.7.2018 12:10

Ahoj nedávno jsem reinstaloval win a dneska jsem si nainstaloval znovu xaamp a zjistil jsem že mi nefuguji sessions resp když ji vytvořím v jednom php souboru v druhém je nedefinovaná session_start() jsem použil. Neví někdo jeslti třeba nevyšla nějaká nová verze kde je nutné je nějak zapnout nebo něco takového? Popřípadě nemá někdo stejný problém ? Díky.

 
Odpovědět
12.7.2018 12:10
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Adam Matis
Petr Čech:12.7.2018 12:41

Uff, používej interpunkci, člověk skoro potřebuje motivaci ten text přečíst ;) .
Je možné, že jsi měl na staré instalaci zapnuté session.auto_start a teď nepoužíváš session_start() dostatečně důsledně. Další problém, který teoreticky může nastat je, že apache nemá přístup k úložišti session, ale to je velice atypické a nastává prakticky jen když si na linuxovém serveru příliš hraješ s právy, na windows jsem to ještě nepotkal.

Především ale musíš vyloučit, že to máš zkrátka špatně napsané, což je skoro vždy pravda. Udělej si tedy něco úplně primitivního, třeba

a.php:

<?php
session_start();
$_SESSION['x'] = 42;

b.php:

<?php
session_start();

echo $_SESSION['x'] ?? 'undefined!';

Když půjdeš na a.php a potom na b.php, jednoznačně určíš, jestli je chyba v tvém kódu nebo skutečně nefungují sessions.
PS: session.auto_start nepoužívej, ačkoliv je to možná lákavé, je to tak trochu prasárna a hlavně budeš mít sakra problém, když to na hostingu bude vypnuté.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
12.7.2018 12:41
the cake is a lie
Avatar
Adam Matis
Člen
Avatar
Odpovídá na Petr Čech
Adam Matis:12.7.2018 12:59

Tak jsem to opravdu měl špatně napsané. Myslel jsem, že session_start() stačí definovat pouze v prvním souboru. Díky za pomoc. ;)

 
Nahoru Odpovědět
12.7.2018 12:59
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Adam Matis
Petr Čech:12.7.2018 14:01

Session start je třeba spustit vždy na začátku zpracování. Nepatří do každého souboru, volá se jen jednou. Normálně buď používáš framework a nemusíš to řešit, nebo máš nějaký soubor, na který v každém souboru uděláš require_once na začátku a ten se stará o připojení k databázi nebo třeba právě session_start()

Nahoru Odpovědět
12.7.2018 14:01
the cake is a lie
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.