Autor | Zpráva | ||
---|---|---|---|
Akali Profil |
#1 · Zasláno: 21. 7. 2010, 15:01:43
Ahoj, po odeslání formuláře když kliknu na F5, odešle se znova
<form name="odeslano" action="#" method="post"> <b>-Jméno:</b><br> <input name="jmeno" size="10"><br> <b>-Zpráva:</b><br> <textarea name="text" rows="3" cols="30"></textarea><br> <input type="submit" name="odeslano" value="Odeslat zprávu"> </form> <h6>Při zaslání příspěvku do tohoto fóra, je zapisována Vaše ip-adresa, chovejte se proto tak, jak máte. Vyjadřujte se slušně </h6> <hr> <?php if (isset($_POST['odeslano'])) { if (empty($_POST['jmeno']) || empty($_POST['text'])) { echo "<div id=\"neodeslano\"> <img src=../images/Vykricnik.gif height=40px width=40px> <table align=left> <tr><td>Vaše zpráva nebyla úspěšně odeslána! Vyplňte</td></tr> <tr><td>nejdříve všechna políčka a zkuste to ještě jednou.</td></tr> </table></div>"; } else { $ref = $REMOTE_ADDR; $datum = StrFTime("%d/%m/%Y %H:%M:%S", Time()); // Připojení k databázi. include '../db.php'; // Správné nastavení češtiny. $objekt_vysledku = mysqli_query($db_spojeni, "SET NAMES 'UTF8'"); // Vytvoření SQL příkazu typu INSERT. $sql_prikaz = "INSERT INTO dorost(jmeno, datum, ip_adresa, text) " ."VALUES('" .mysqli_real_escape_string($db_spojeni,$_POST['jmeno']) ."','" .mysqli_real_escape_string($db_spojeni,$datum) ."','" .mysqli_real_escape_string($db_spojeni,$ref) ."','" .mysqli_real_escape_string($db_spojeni,$_POST['text']) ."')" ; // Zaslání SQL příkazu do databáze. $objekt_vysledku = mysqli_query($db_spojeni, $sql_prikaz); echo "<div id=\"odeslano\"><img src=../images/ok.png height=40px width=40px><span style=\"vertical-align: top\">Vaše zpráva byla úspěšně odeslána</span></div>"; UNSET($_POST['odeslano']); } } ?> Myslel jsem, že když dám UNSET($_POST['odeslano']); -> že to dělat nebude.. Ale je to naprosto stejné. Jak to tedy vyřešit. Slyšel jsem o metodě přesměrování, ale jak to funguje? Odešlu formulář, přesměruje se to na stránku "x" a jak dám uživateli vědět, zda to bylo odesláno, či nebylo? |
||
denCo Profil |
#2 · Zasláno: 21. 7. 2010, 15:05:22
presmeruj ho nejak takto
header("Location: stranka.php?ok"); a tam na tej stranke to kontroluj nejako takto if ( $_SERVER['REQUEST_URI'] == "ok") { echo "uspesne ste osodlali formular"; } |
||
Akali Profil |
#3 · Zasláno: 21. 7. 2010, 15:24:22
A když to mám všechno na jedné stránce, jak dám tedy vědět o úspěšném odeslání
<?php if (isset($_POST['odeslano'])) { if (empty($_POST['jmeno']) || empty($_POST['text'])) { echo "<div id=\"neodeslano\"> <img src=../images/Vykricnik.gif height=40px width=40px> <table align=left> <tr><td>Vaše zpráva nebyla úspěšně odeslána! Vyplňte</td></tr> <tr><td>nejdříve všechna políčka a zkuste to ještě jednou.</td></tr> </table></div>"; } else { $ref = $REMOTE_ADDR; $datum = StrFTime("%d/%m/%Y %H:%M:%S", Time()); // Připojení k databázi. include '../db.php'; // Správné nastavení češtiny. $objekt_vysledku = mysqli_query($db_spojeni, "SET NAMES 'UTF8'"); // Vytvoření SQL příkazu typu INSERT. $sql_prikaz = "INSERT INTO dorost(jmeno, datum, ip_adresa, text) " ."VALUES('" .mysqli_real_escape_string($db_spojeni,$_POST['jmeno']) ."','" .mysqli_real_escape_string($db_spojeni,$datum) ."','" .mysqli_real_escape_string($db_spojeni,$ref) ."','" .mysqli_real_escape_string($db_spojeni,$_POST['text']) ."')" ; // Zaslání SQL příkazu do databáze. $objekt_vysledku = mysqli_query($db_spojeni, $sql_prikaz); header("Location: forum.php?ok"); } } ?> Kam přijde ta kontrola if ( $_SERVER['REQUEST_URI'] == "ok") { echo "uspesne ste osodlali formular"; } |
||
SwimX Profil |
#4 · Zasláno: 21. 7. 2010, 15:27:30
Akali:
na uplný konec toho kódu co si sem dal. |
||
denCo Profil |
#5 · Zasláno: 21. 7. 2010, 15:28:53
to je fuk, hocikde mimo if (isset($_POST['odeslano']))
|
||
Akali Profil |
#6 · Zasláno: 21. 7. 2010, 15:41:23
Tak nevím.. Sice po přesměrování a kliknutí na F5 se opět neodešle, ale zpráva o úspěšném odeslání se nezobrazí : )
Tady je celej kód <?php if (isset($_POST['odeslano'])) { if (empty($_POST['jmeno']) || empty($_POST['text'])) { echo "<div id=\"neodeslano\"> <img src=../images/Vykricnik.gif height=40px width=40px> <table align=left> <tr><td>Vaše zpráva nebyla úspěšně odeslána! Vyplňte</td></tr> <tr><td>nejdříve všechna políčka a zkuste to ještě jednou.</td></tr> </table></div>"; } else { $ref = $REMOTE_ADDR; $datum = StrFTime("%d/%m/%Y %H:%M:%S", Time()); // Připojení k databázi. include '../db.php'; // Správné nastavení češtiny. $objekt_vysledku = mysqli_query($db_spojeni, "SET NAMES 'UTF8'"); // Vytvoření SQL příkazu typu INSERT. $sql_prikaz = "INSERT INTO dorost(jmeno, datum, ip_adresa, text) " ."VALUES('" .mysqli_real_escape_string($db_spojeni,$_POST['jmeno']) ."','" .mysqli_real_escape_string($db_spojeni,$datum) ."','" .mysqli_real_escape_string($db_spojeni,$ref) ."','" .mysqli_real_escape_string($db_spojeni,$_POST['text']) ."')" ; // Zaslání SQL příkazu do databáze. $objekt_vysledku = mysqli_query($db_spojeni, $sql_prikaz); header("Location: forum.php?ok"); if ( $_SERVER['REQUEST_URI'] == "ok") { echo "uspesne ste osodlali formular"; } } } ?> |
||
SwimX Profil |
#7 · Zasláno: 21. 7. 2010, 16:15:42
Akali:
SwimX: „na uplný konec toho kódu co si sem dal.“ denCo: „to je fuk, hocikde mimo if (isset($_POST['odeslano']))“ a ty to dáš do té podmínky. |
||
Akali Profil |
#8 · Zasláno: 21. 7. 2010, 16:25:43
Jo, zkoušel jsem to i takto a nic se nestalo
<?php if (isset($_POST['odeslano'])) { if (empty($_POST['jmeno']) || empty($_POST['text'])) { echo "<div id=\"neodeslano\"> <img src=../images/Vykricnik.gif height=40px width=40px> <table align=left> <tr><td>Vaše zpráva nebyla úspěšně odeslána! Vyplňte</td></tr> <tr><td>nejdříve všechna políčka a zkuste to ještě jednou.</td></tr> </table></div>"; } else { $ref = $REMOTE_ADDR; $datum = StrFTime("%d/%m/%Y %H:%M:%S", Time()); // Připojení k databázi. include '../db.php'; // Správné nastavení češtiny. $objekt_vysledku = mysqli_query($db_spojeni, "SET NAMES 'UTF8'"); // Vytvoření SQL příkazu typu INSERT. $sql_prikaz = "INSERT INTO dorost(jmeno, datum, ip_adresa, text) " ."VALUES('" .mysqli_real_escape_string($db_spojeni,$_POST['jmeno']) ."','" .mysqli_real_escape_string($db_spojeni,$datum) ."','" .mysqli_real_escape_string($db_spojeni,$ref) ."','" .mysqli_real_escape_string($db_spojeni,$_POST['text']) ."')" ; // Zaslání SQL příkazu do databáze. $objekt_vysledku = mysqli_query($db_spojeni, $sql_prikaz); header("Location: forum.php?ok"); } } if ( $_SERVER['REQUEST_URI'] == "ok") { echo "odeslano"; } ?> |
||
Keeehi Profil |
#9 · Zasláno: 21. 7. 2010, 16:27:42
Akali:
Pořád špatně, když nakonec, tak nakonec! ta závorka tem není pro srandu. |
||
Akali Profil |
#10 · Zasláno: 21. 7. 2010, 16:34:09
Keeehi
SwimX: „na uplný konec toho kódu co si sem dal.“ Nevím kde je větší konec než tam, kde ten kód je :( Myslíte snad až pod tento PHP kód? Nejspíš Vás nechápu : ) |
||
Keeehi Profil |
#11 · Zasláno: 21. 7. 2010, 16:41:16 · Upravil/a: Keeehi
Keeehi:
Až za tu poslední závorku }. Já končím, toto se už nedá. Dneska je problém i najít konec. |
||
Akali Profil |
#12 · Zasláno: 21. 7. 2010, 16:45:23
Tak se na ten kód podívej ještě jednou.. Tohle totiž patří k sobě
if ( $_SERVER['REQUEST_URI'] == "ok") { echo "odeslano"; } Tenhle script je pod vším ostatním.. Dneska by sis asi měl dát voraz |
||
Keeehi Profil |
#13 · Zasláno: 21. 7. 2010, 16:49:36 · Upravil/a: Keeehi
Akali:
Omlouvám se, to jsem přehlédl. Tady bych já totiž závorky nepsal. Můžete zkusit tuto podmínku if(isset($_GET["ok"]))
|
||
Akali Profil |
#14 · Zasláno: 21. 7. 2010, 16:50:39
Pohodička, jenom jsem si to raději 10krát kontroloval..
Jenže ty závorky za nefunkčnost nemůžou, ne? |
||
Keeehi Profil |
#15 · Zasláno: 21. 7. 2010, 16:52:50 · Upravil/a: Keeehi
Akali:
Závorky by měli být v pořádku. Co vlasně vypíše echo $_SERVER['REQUEST_URI']; ?
|
||
Akali Profil |
#16 · Zasláno: 21. 7. 2010, 16:58:11 · Upravil/a: Akali
Tak tohle taky nefunguje
if(isset($_GET["ok"])) echo "odeslano"; a echo $_SERVER['REQUEST_URI'];? |
||
Akali Profil |
#17 · Zasláno: 21. 7. 2010, 17:05:01
Tak se omlouvám! Tento způsob funguje!
Děkuji Vám! |
||
Keeehi Profil |
#18 · Zasláno: 21. 7. 2010, 17:26:10
Akali:
„vypsala pouze toto /dorost/forum.php?ok“ - proto se to nikdy nemohlo rovnat stringu "ok" |
||
AM_ Profil |
#19 · Zasláno: 21. 7. 2010, 22:16:27
[#12] Akali
kdyby s to měl kulturně odsazené if ( $_SERVER['REQUEST_URI'] == "ok") { echo "odeslano"; } hned by to bylo vidět. |
||
Časová prodleva: 14 let
|
0