Vánoční nadílka Vánoční nadílka
Až 80% zdarma! Předvánoční BLACK FRIDAY akce. Více informací

Diskuze: nefunguji $_SESSION

PHP PHP nefunguji $_SESSION American English version English version

Aktivity (1)
Avatar
Adam Matis
Člen
Avatar
Adam Matis:12. července 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. července 12:10
Avatar
Petr Čech
Redaktor
Avatar
Odpovídá na Adam Matis
Petr Čech:12. července 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í
+1 bodů
Řešení problému
Nahoru Odpovědět  +1 12. července 12:41
the cake is a lie
Avatar
Adam Matis
Člen
Avatar
Odpovídá na Petr Čech
Adam Matis:12. července 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  +1 12. července 12:59
Avatar
Petr Čech
Redaktor
Avatar
Odpovídá na Adam Matis
Petr Čech:12. července 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. července 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.