Diskuze: PHP sessions výpis proměnné
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Tvůrce
Zobrazeno 15 zpráv z 15.
//= 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.
A vypisuješ ji před obnovením nebo až po něm? Je totiž možné, že nemáš povolené register globals.
proměnnou vypisuji před obnovením, ale sessions používám taky při přihlašování kde funguje vše v pořádku... Zkusil jsem taky dát proměnnou do podmínky isset($_SESSION["presmerovani_parametr_gal"]) výsledek byl že php skočilo do větve else... takže to vypadá že v tom scriptu (který zpacovává formulář) vůbec není.... ale měla by
Register globals zase hezky vypni. Je zbytečný a nebezpečný.
Ve skriptu, který formulář zpracovává, musíš také mít session_start(); před použitím $_SESSION.
Do indexu includuješ i skript, který ten formulář zpracovává? To jsi předtím nepsal. Předpokládal jsem, že to máš nějak takto:
<form action="ulozit.php" ...>
Zřejmě to máš jinak a nezbývá mi nic jiného, než věštit. Takže to máš takto?
<form action="index.php" ...>
Předtím si to pochopil dobře
mám to takhle <form action="ulozit.php" ...>
A tvoje řešení fungovalo, jen jsem předpokládal že když session_start()
zavolám v indexu tak že superglobální proměnná je dostupná i v
ulozit.php
Uz sem si to srovnal,proměnná by byla dostupná bez volání session_start() v
ulozit.php kdyby jak si uváděl jsem formulář includoval do indexu...
Jaká superglobální proměnná? Server vše kromě hodnot session po každém odeslání stránky ihned zapomíná. Zapomene dokonce i informaci, kde tu session má uloženu. Klient mu tuto informaci musí pokaždé sdělit přes cookies a to se dělá právě přes session_start();
index.php i ulozit.php jsou zřejmě zcela samostatné skripty, které spolu žádné informace nesdílí.
Rozlišuj pojmy formulář a zpracování formuláře. Jak se v tom pak máme vyznat? Při zpracování formuláře se na výstup nesmí generovat žádné HTML. Pouze se zpracovávají vstupy.
výrazem superglobální proměnná jsem myslel: $_SESSION["neco"] chtel jsem to odlišit od normální proměnné aby ste mě dobře chápali, myslím že se tomu tak říká . V té pak mám uložený název parametru před odesláním formuláře. Ve scriptu kde formulář zpracovávám tuto "superglobální proměnnou" použiji k přesměrování zpět na původní stránku. Takže žádný obsah ve scriptu zpracování formuláře negeneruji... Jinak díky za radu
Používej raději vžitý pojem "session". Pokud chceš session používat, musíš v každém skriptu mít session_start(). Nepočítám include().
Proto mívám komplet celý web v index.php . Samozřejmě kromě definic tříd. Nemůže se mi pak stát, že bych někde zapomněl na session_start(), na __autoload() nebo na globální ošetření výjimek či fatálních chyb.
Zobrazeno 15 zpráv z 15.