Autor | Zpráva | ||
---|---|---|---|
Dexx Profil * |
#1 · Zasláno: 11. 11. 2008, 21:00:19
Po úspěšném odeslání $_POST polí byl potřeboval ošetřit, aby se po znovuobnovení stránky znovu data neodeslala, aniž bych musel stránku přesměrovat někam jinam a zpátky.
Zkoušel jsem unset($_POST); ovšem to nefunguje, nemáte někdo nějaké funkční řešení? Existuje vůbec něco? Děkuji |
||
Měsíček Profil |
#2 · Zasláno: 11. 11. 2008, 21:03:15 · Upravil/a: Měsíček
$_POST=array(); // IMHO to nepůjde - je to totiž záležitost prohlížeče .. s tím PHP nic neudělá. Můžeš vyzkoušet .. ať při odeslání klikne na tlačítko "Odeslat" 2x.
EDIT:// |
||
Alphard Profil |
#3 · Zasláno: 11. 11. 2008, 21:04:56
„aniž bych musel stránku přesměrovat“
nelze, unset nepomůže, a nic jiného také ne, $_POST se smaže při aktuálním provádění scriptu, ale při obnovení prohlížeč znovu odešle data a jsme tam, kde jsme byli ale když přesměrujete na sebe sama, tak to snad ničemu nevadí Měsíček stejný problém, na F5 je to krátké |
||
BetaCam Profil |
#4 · Zasláno: 11. 11. 2008, 21:08:34
Dexx
Jak říká Alphard přesměrovat. |
||
Dexx Profil * |
#5 · Zasláno: 11. 11. 2008, 21:39:34
Dobře, děkuji všem za odpověď
|
||
Dexx Profil * |
#6 · Zasláno: 11. 11. 2008, 21:41:06
Ještě bych měl ale otázku, která se tohoto také týče.
Jak řešíte např. zobrazování hlášek typu Registrace proběhla v pořádku, Heslo je příliš krátké? uložíte si je do session, které po přesměrování zobrazíte? |
||
BetaCam Profil |
#7 · Zasláno: 11. 11. 2008, 21:43:51
Dexx
Session + query string samotné session je nespolehlivé. |
||
japlavaren Profil |
#8 · Zasláno: 11. 11. 2008, 21:46:11
ja presmerovavam az ked sa form ulozi..
aby sa mi zobrazili povodne hodnoty to riesim: <input type='text' name='name' value='$_POST[name]' /> pripadne okopirujem post do pola |
||
Dexx Profil * |
#9 · Zasláno: 11. 11. 2008, 21:52:59
BetaCam
V tom případě stačí pouze query string ne? Např. registrace?strana=chyba1 registrace?strana=chyba2 ... a poté if($_GET['strana'] == 'chyba1'){ echo 'blabla'; }elseif($_GET['strana'] == 'chyba2'){ echo 'blabla2'; } |
||
BetaCam Profil |
#10 · Zasláno: 12. 11. 2008, 11:10:48 · Upravil/a: BetaCam
Dexx
„V tom případě stačí pouze query string ne?“ Teoreticky samozdřejmě stačí, ale použití session za podpory query stringu má své výhody oproti samotnému query stringu. Takovej primitivní příklad : <?php session_start(); if (isset($_POST['odeslat'])) { $token = sha1(time()); if (strlen($_POST['nick'])< 3) { $_SESSION['errors'][$token][] = 'Kratky nick'; } if(strlen($_POST['nick'])> 10){ $_SESSION['errors'][$token][] = 'Dlouhy nick'; } if (preg_match('/^Admin$|^Guest$/', $_POST['nick'])) { $_SESSION['errors'][$token][] = 'Vyhrazeny nick'; } if (strlen($_POST['pass'])< 6) { $_SESSION['errors'][$token][] = 'Kratke heslo'; } if(strlen($_POST['pass'])> 20){ $_SESSION['errors'][$token][] = 'Dlouhe heslo'; } if (isset($_SESSION['errors'][$token])) { header('Location: index.php?token='.$token); exit(); }else{ //Nejakej kód } } echo '<div>'; var_dump($_SESSION['errors'][$_GET['token']]); unset($_SESSION['errors'][$_GET['token']]); echo '</div>'; echo '<form action="index.php" method="POST">'; echo 'Nick <input type="text" name="nick"><br />'; echo 'Pass <input type="text" name="pass"><br />'; echo '<input type="submit" name="odeslat" value="Odeslat">'; echo '</form>'; ?> Neni to samozdřejmě napsané úplně tak jak by se to běžne používalo, ale je to napsané tak, aby z toho bylo znát v čem je to výhodnější. |
||
Dexx Profil * |
#11 · Zasláno: 14. 11. 2008, 19:11:41
BetaCam
Dobře, díky ;-) |
||
Časová prodleva: 15 let
|
0