Autor | Zpráva | ||
---|---|---|---|
mhanny Profil * |
#1 · Zasláno: 10. 12. 2008, 19:13:41
ahoj, mám takový problém se session, resp. s jejím odebráním
řešil jsem to už několikrát, ale nakonec jsem přešel k jinému řešení, teď jsem se, ale rozhodl na to končeně přijít :) situace: mám formulář a při jeho odeslání se kontrolují odeslaná data, jakmile je něco zadáno špatně, informuje o tom stránka nad formulářem, jakmile jsou ale data zadána správně, provedou se určité operace a dojde k přesměrování na tu samou stránku, jako ochrana proti F5 a znovuodeslání v tom si myslím, že problém není jde o to, že chci kromě informování o špatném zadání také informovat o úspěšném odeslání a zpracování to jsem vyřešil tím, že než dojde k přesměrování tak vytvořím nějakou session a na základě té pak uživateli napíšu o úspěšném zpracování to vše mi funguje, tady je příklad kódu if(IsSet($_SESSION['sent'])){ echo "Odesláno..."; } problém je v tom, že tu hlášku tam nechci po celou dobu, ale chci ji zobrazit jen jednou po tom odeslání, proto logicky po zobrazení danou session odeberu, tím by se příště neměla zobrazit pre]if(IsSet($_SESSION['sent'])){ echo "Odesláno..."; UnSet($_SESSION['sent']); }[/pre] Jenomže tohle už mi nefunguje a já nevím proč :( To echo se vůbec nevypíše, vlastně nic v té podmínce se nestane kromě toho odebrání session. Lámu si nad tím hlavu a možná, že je to triviální problém. No budu vděčný za každý názor a předem děkuji :) |
||
mhanny Profil * |
#2 · Zasláno: 10. 12. 2008, 19:49:40
abych upřesnil problém...
tohle funguje jak má $_SESSION['text'] = "něco"; if(IsSet($_SESSION['text'])){ echo $_SESSION['text']; UnSet($_SESSION['text']); } zjistil jsem, že neplechu mi to dělá jen pokud první řádek, tedy tu session nadefinuji před přesměrováním na tu samou stránku :) |
||
mhanny Profil * |
#3 · Zasláno: 10. 12. 2008, 21:13:41
Tak jsem to vyřešil, sice ne příliš elegantne, ale už to funguje jak má :)
do session nastavím číslo "1" a pak po každém použití této sessions toto číslo o jedno navýším a když dojde k číslu "3" tak ji teprv odeberu a tím tedy dojde k tomu, že se zobrazila jen jednou a to když byla její hodnota "2" :) trošku chaos to přiznávám, nicméně pokud má někdo jiné řešení budu rád :) |
||
v6ak Profil |
#4 · Zasláno: 10. 12. 2008, 22:19:50
No nevím, jak to přesně máš, ale tipuji toho:
nastav session přesměruj ... vypis a smaž session Takže skript nastaví session, přesměruje a skript dále pokračuje, i když uživatel to nevidí a vypíše a smaže session. Uživatelovi se pak načte nová stránka, která už bude mít sežranou session a nic nevypíše. |
||
mhanny Profil * |
#5 · Zasláno: 11. 12. 2008, 12:24:13
v6ak
Vlastně máte pravdu a teď mi došlo proč to nemohlo jít. Já jak jsem nad tím stále důmal tak mi to nemohlo dojít. Chybu jsem měl v tom přesměrování, resp. za ním. Nepsané pravidlo, že po přesměrování následuje exit; aby se nepokračovalo v kódu a tím to bylo celé způsobené, že se daná session uživateli nezobrazila. Vyřešeno děkuju moc :) vystihl jste to přesně, teď nechápu proč jsem si tím lámal tolik hlavu |
||
Časová prodleva: 15 let
|
0