Autor | Zpráva | ||
---|---|---|---|
kudlanka Profil * |
#1 · Zasláno: 27. 7. 2005, 01:35:32
Ahoj vespolek,
nastudoval jsem session, ale něco mi stále uniká: mám několik kroků rozdělených do několika formulářů, následující krok je vždy přístupný po vyplnění předchozího nějak takhle: if(!isset($_SESSION[promenna2]) && isset($_SESSION[promenna1])) { // zobraz formular 2 } jak zobrazit předchozí formulář v případě, že uživatel klikne na tlačítko Zpět v okně prohlížeče? Zdá se, že v poli $_SESSION zůstane hodnota z předchozího formuláře nastavená. |
||
Leo Profil |
#2 · Zasláno: 27. 7. 2005, 08:36:00
No v poli session (uklada se na serveru) hodnoty zustanou dokud je v nejakem skriptu neprepisete. Ovsem vas problem je nejspis v tom, ze prohlizec stranku zobrazuje z pameti aniz se dotazuje serveru na aktualni stav, takze musite nastavit http hlavicky (pres fci header), ktere zabrani kesovani. Leo
|
||
kudlanka Profil * |
#3 · Zasláno: 27. 7. 2005, 11:10:53
Bohužel zákaz cacheování nepomohl.
Při stisku tlačitka Zpět na browseru se nic neděje, při druhém stisku se vrátím o 2 kroky zpět (na místo, kde není použita session). Potřebuji zobrazit předchozí formulář pro změnu zadaných údajů. |
||
Leo Profil |
#4 · Zasláno: 27. 7. 2005, 11:36:36
To uz zalezi na tom, jak to mate konkretne udelane, a bez blizsi informace tezka rada... Leo
|
||
kudlanka Profil * |
#5 · Zasláno: 27. 7. 2005, 11:48:07
Vypadá to asi takhle:
session_start(); // pridani promenny do session if(isset($_POST[datumod])) { $_SESSION[datumod] = $_POST[datumod]; } if(isset($_POST[datumdo])) { $_SESSION[datumdo] = $_POST[datumdo]; } . . předchozí formuláře . . /* Form - DatumOd */ /****************/ if(!isset($_SESSION[datumod])) { ?> <form action="" method="post"> <strong>Datum nástupu:</strong><br /> <input class="mandatory" type="text" name="datumod" value="" /> <input type="submit" name="akce" value="X" /><br /> </form> <? } /* Form - Datum do */ /****************/ if((!isset($_SESSION[datumdo]) || $_SESSION[datumod] >= $_SESSION[datumdo]) && isset($_SESSION[datumod])) { ?> <form action="" method="post"> <strong>Datum ukončení:</strong><br /> <input class="mandatory" type="text" name="datumdo" value="" /> <input type="submit" name="akce" value="X" /><br /> </form> <? } . . Další formuláře . . Ve skriptu se ještě vyskytují jiné formuláře, které volaji jiné skripty a vrací se zpět - proto nemohu použít metodu POST a metoda GET je nepoužitelná pro omezení délky v URL. |
||
Leo Profil |
#6 · Zasláno: 27. 7. 2005, 11:51:26
"Ve skriptu se ještě vyskytují jiné formuláře, které volaji jiné skripty a vrací se zpět - proto nemohu použít metodu POST"
Obecne plati, ze skript, ktery je prijme data z formulare odeslaneho metodou POST by nemel delat vystup do prohlizece, jen zpracovani a presmerovani. Leo |
||
kudlanka Profil * |
#7 · Zasláno: 27. 7. 2005, 12:19:25
Ale to v mém případě imho platí.
Proměnné z $_POSTu si dávám do $_SESSION. Pak kontroluji, které session proměnné jsou nastavené a podle toho zobrazím správný formulář. V případě, že volám externí skript udělám v něm zpracování dat a předměrování na volající skript. Doposud jsem si vracel potřebné parametry v URL, ale pak jsem narazil na omezení metody GET a proto začal zkoumat session. Problém je v tom, že kdyz použiji tlačítko Zpět nemůžu kontrolovat proměnné v poli $_SESSION, protože ty jsou pořád nastavená a tím pádem se vlastně nic nestane. A já potřebuji mít možnost znovu editovat data z předchozího formuláře. |
||
WertriK Profil * |
#8 · Zasláno: 27. 7. 2005, 13:03:33
V tech vedrech me napadlo toto;
Udelat si tam vlastni policko "zpet" a predavat POSTEM (treba) promennou "step". a misto if(!isset($_SESSION[promenna1])) { // zobraz formular1 <input type="hidden" name="step" value="2"> - pouze příklad jak by jsi to mohl předávat } if(!isset($_SESSION[promenna2]) && isset($_SESSION[promenna1])) { // zobraz formular 2 <input type="hidden" name="step" value="3"> } by jsi mel switch($step): case "1": // zobraz formular 1 break; case "2": // zobraz formular 2 break; endswitch; To by slo, nebo se mylim ? - Jestli se mylim, tak to vysledek tech 35 stupnu.... |
||
kudlanka Profil * |
#9 · Zasláno: 27. 7. 2005, 14:10:39
To mě také napadlo, nakonec řeším to tak, že jsem si doplnil hidden proměnnou do formulářú a podle toho jakou obsahuje hodnotu provádím unset($_SESSION[promenna]), ale příjde mi to dost krkolomné...
Myslím, že někde dělám něco špatně a nemohu příjít na to kde a proč. |
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0