Autor | Zpráva | ||
---|---|---|---|
Akali Profil |
#1 · Zasláno: 2. 2. 2011, 11:21:22 · Upravil/a: Akali
Ahoj, potřeboval bych pomoc s přesměrováním.Vím, že před ním nemá být žádný výstup, ale když ho dám úplně na začátek stránky tak se odešle mail() bez kontroly. Kód je tady
<!DocType html public "-//W3C//DTD HTML 4.01//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <meta http-equiv="content-language" content="cs" /> <meta name="author" content="; kittlerpeta@centrum.cz: "> <meta name="description" content="Kamil Eliáš - nábytek"> <meta name="robots" content="index,follow"> <meta name="keywords" content="Kamil Eliáš - nábytek"> <meta name="copyright" content="kittlerpeta@centrum.cz"> <link rel="shortcut icon" href="../../images/favicon.jpg"> <link rel="stylesheet" type="text/css" href="../../styles/main.css"> <title>Kamil Eliáš - nábytek</title> </head> <body> <div id="wrapper"> <div id="header"> <ul class="menu"> <li class="menu"><a href="../../index.html" class="menu">domů</a></li> <li class="menu"><a href="../../kontakt.html" class="menu">kontakt</a></li> <li class="menu"><a href="../../sortiment.php" class="menu">sortiment</a></li> <li class="menu"><a href="../../reference.html" class="menu">reference</a></li> </ul> </div> <div id="prouzek"> <div id="leftcolumn"> <div style="position:relative; top:574px; left:295px;"><img src="../../images/ok.gif" alt=""></div> <img src="../../images/pm.gif" alt=""> </div> <div id="rightcolumn"> <?php $_POST['email'] = $email; If($_POST['odeslano']) { if (Empty($_POST['jmeno'])) $chyba[1]="Vaše křestní jméno"; if (Empty($_POST['prijmeni'])) $chyba[2]="Vaše příjmení"; if (Empty($_POST['email'])) $chyba[3]="Vaše e-mailová schránka"; if (Empty($_POST['mesto'])) $chyba[4]="Město"; if (Empty($_POST['ulice'])) $chyba[5]="Ulice a číslo popisné"; if (Empty($_POST['psc'])) $chyba[6]="PSČ"; if (Empty($_POST['telefon'])) $chyba[6]="Telefonní číslo"; if(isset($chyba)){ echo '<div id="chyba">Některá políčka zůstala nevyplněna!</div>'; echo '<div class="chybovehlasky">'.implode("<br />", $chyba).'</div><hr>'; include "formular.php"; } else{ $zprava = htmlspecialchars($_POST['zprava']); $zprava .= "\n\n Jméno:".htmlspecialchars($_POST['jmeno']); $zprava .= "\n Příjmení:".htmlspecialchars($_POST['prijmeni']); $zprava .= "\n e-mail:".htmlspecialchars($_POST['email']); $zprava .= "\n ulice a čp:".htmlspecialchars($_POST['ulice']); $zprava .= "\n Město:".htmlspecialchars($_POST['mesto']); $zprava .= "\n PSČ:".htmlspecialchars($_POST['psc']); $zprava .= "\n Telefonní číslo:".htmlspecialchars($_POST['telefon']); $zprava .= "\n Zboží:".htmlspecialchars($_POST['zbozi']); $zprava .= "\n Fax:".htmlspecialchars($_POST['fax']); // předmět s diakritikou $encodedsubject = base64_encode ("Objednávka"); $predmet = "=?utf-8?B?$encodedsubject?="; //nastavení mailu $headers = "MIME-Version: 1.0\r\n"; $headers.= "Content-Type: text/plain; charset=UTF-8\r\n"; $headers.= "Content-Transfer-Encoding: 8bit\r\n"; $headers.= "From: $email\r\n"; If(Mail("kittlerpeta@centrum.cz", $predmet, $zprava, $headers)){ header("Location: odeslano.php?hotovo"); } else{ echo '<div class="chybovehlasky">Chyba odeslání E-mailu</div>'; include "formular.php"; } } } else{ include "formular.php"; } ?> </div> <hr class="cistic"> </div> <div id="footer"> Vytvořil.....<br><br> </div> </div> </body> </html> |
||
Tori Profil |
#2 · Zasláno: 2. 2. 2011, 11:35:44 · Upravil/a: Tori
Nejdřív dejte kontrolu údajů (pokud byl vyplněn formulář) a pokud nic nechybí, odeslat email a přesměrovat.
Pak teprv výstup, kde vypíšete chyby (pokud nějaké byly) a include formuláře. |
||
Akali Profil |
#3 · Zasláno: 2. 2. 2011, 11:56:16
Asi jsem to dost dobře nepochopil.. Myslel jste to takto:
<!DocType html public "-//W3C//DTD HTML 4.01//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <meta http-equiv="content-language" content="cs" /> <meta name="author" content="; kittlerpeta@centrum.cz: "> <meta name="description" content="Kamil Eliáš - nábytek"> <meta name="robots" content="index,follow"> <meta name="keywords" content="Kamil Eliáš - nábytek"> <meta name="copyright" content="kittlerpeta@centrum.cz"> <link rel="shortcut icon" href="../../images/favicon.jpg"> <link rel="stylesheet" type="text/css" href="../../styles/main.css"> <title>Kamil Eliáš - nábytek</title> </head> <body> <div id="wrapper"> <div id="header"> <ul class="menu"> <li class="menu"><a href="../../index.html" class="menu">domů</a></li> <li class="menu"><a href="../../kontakt.html" class="menu">kontakt</a></li> <li class="menu"><a href="../../sortiment.php" class="menu">sortiment</a></li> <li class="menu"><a href="../../reference.html" class="menu">reference</a></li> </ul> </div> <div id="prouzek"> <div id="leftcolumn"> <div style="position:relative; top:574px; left:295px;"><img src="../../images/ok.gif" alt=""></div> <img src="../../images/pm.gif" alt=""> </div> <div id="rightcolumn"> <?php $_POST['email'] = $email; If($_POST['odeslano']) { if (Empty($_POST['jmeno'])) $chyba[1]="Vaše křestní jméno"; if (Empty($_POST['prijmeni'])) $chyba[2]="Vaše příjmení"; if (Empty($_POST['email'])) $chyba[3]="Vaše e-mailová schránka"; if (Empty($_POST['mesto'])) $chyba[4]="Město"; if (Empty($_POST['ulice'])) $chyba[5]="Ulice a číslo popisné"; if (Empty($_POST['psc'])) $chyba[6]="PSČ"; if (Empty($_POST['telefon'])) $chyba[6]="Telefonní číslo"; If(Mail("kittlerpeta@centrua.cz", $predmet, $zprava, $headers)){ header("Location: odeslano.php?hotovo"); } else{ echo '<div class="chybovehlasky">Chyba odeslání E-mailu</div>'; include "formular.php"; } if(isset($chyba)){ echo '<div id="chyba">Některá políčka zůstala nevyplněna!</div>'; echo '<div class="chybovehlasky">'.implode("<br />", $chyba).'</div><hr>'; include "formular.php"; } else{ $zprava = htmlspecialchars($_POST['zprava']); $zprava .= "\n\n Jméno:".htmlspecialchars($_POST['jmeno']); $zprava .= "\n Příjmení:".htmlspecialchars($_POST['prijmeni']); $zprava .= "\n e-mail:".htmlspecialchars($_POST['email']); $zprava .= "\n ulice a čp:".htmlspecialchars($_POST['ulice']); $zprava .= "\n Město:".htmlspecialchars($_POST['mesto']); $zprava .= "\n PSČ:".htmlspecialchars($_POST['psc']); $zprava .= "\n Telefonní číslo:".htmlspecialchars($_POST['telefon']); $zprava .= "\n Zboží:".htmlspecialchars($_POST['zbozi']); $zprava .= "\n Fax:".htmlspecialchars($_POST['fax']); // předmět s diakritikou $encodedsubject = base64_encode ("Objednávka"); $predmet = "=?utf-8?B?$encodedsubject?="; //nastavení mailu $headers = "MIME-Version: 1.0\r\n"; $headers.= "Content-Type: text/plain; charset=UTF-8\r\n"; $headers.= "Content-Transfer-Encoding: 8bit\r\n"; $headers.= "From: $email\r\n"; } } else{ include "formular.php"; } ?> </div> <hr class="cistic"> </div> <div id="footer"> Vytvořila reklamní grafika Jiří Pýcha<br><br> </div> </div> </body> </html> |
||
Tori Profil |
#4 · Zasláno: 2. 2. 2011, 12:19:24 · Upravil/a: Tori
Ne, myslela jsem celý blok zpracování formuláře, odeslání emailu a přesměrování (řádky 47-87 z [#1]) dát na začátek skriptu. A v případě chybějících údajů místo echo "chyba"; všechny chyby uložit do pole. Pak teprv doctype a kus stránky, vypsat chyby, zobrazit formulář a zbytek stránky.
Prostě aby byla zvlášť logika zpracování formuláře a reakce na různé situace (nevyplněné údaje, neodeslaný email,...), a zvlášť zobrazení stránky (kde by naopak bylo PHP v co nejmenší míře, jen na výpis chyb a include). |
||
Akali Profil |
#5 · Zasláno: 2. 2. 2011, 12:22:23
Tak to se v tom ztrácím.. :( Ale budu se o to pokoušet dál.
|
||
Časová prodleva: 13 let
|
0