Diskuze: nefunguji $_SESSION
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
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é.
Tak jsem to opravdu měl špatně napsané. Myslel jsem, že session_start()
stačí definovat pouze v prvním souboru. Díky za pomoc.
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()
Zobrazeno 4 zpráv z 4.