Autor | Zpráva | ||
---|---|---|---|
Mirekkkk Profil * |
#1 · Zasláno: 17. 1. 2010, 14:05:13
Ahoj,
prosím o radu, když zadam do tohoto formuláře e-mailovou adresu, tak se mi to sice pošle, ale stále mi to píše ať ji zadám. Co s tím? A taky bych prosil o radu jak udělat, aby když to obnovim, tak se to neodeslalo znovu. Díky <? function vypisForm($jmeno,$mail,$predmet,$text) { echo " <form method=post action=\"formular.php\"> Jméno:<br> <input name=jmeno value=\"".$jmeno."\"><br> Mail:<br> <input name=mail value=\"".$mail."\"><br> Předmět:<br> <input name=predmet value=\"".$predmet."\"><br> Text zprávy<br> <textarea style=\"width:200px; height:150px;\" name=text>".$text."</textarea><br><br> <input type=submit value=Odeslat> </form> <br><br> "; } if (empty($_POST)) vypisForm("","","",""); else { if ($_POST["jmeno"]=="" || ereg("^ +$",$_POST["jmeno"])) { echo "Zadejte prosím své jméno."; vypisForm($_POST["jmeno"],$_POST["mail"],$_POST["predmet"],$_POST["text"]); } elseif ($_POST["mail"]=="" || ereg("^.+@.+\..+$",$_POST["mail"])) { echo "Zadejte prosím svůj mail."; vypisForm($_POST["jmeno"],$_POST["mail"],$_POST["predmet"],$_POST["text"]); } elseif ($_POST["predmet"]=="" || ereg("^ +$",$_POST["predmet"])) { echo "Zadejte prosím předmět."; vypisForm($_POST["jmeno"],$_POST["mail"],$_POST["predmet"],$_POST["text"]); } elseif ($_POST["text"]=="" || ereg("^ +$",$_POST["text"]) || strlen($_POST["text"]) > 500) { echo "Text e-mailu by měl být v rozmezí 1-500 znaků."; vypisForm($_POST["jmeno"],$_POST["mail"],$_POST["predmet"],$_POST["text"]); } else { if ($_SERVER["SERVER_ADDR"]!="127.0.0.1") Mail ("blabla@seznam.cz",$_POST["predmet"],$_POST["text"],"From: " . $mail . "\r\n"); echo "E-mail byl úspěšně odeslán."; } } ?> |
||
blazej44800 Profil |
#2 · Zasláno: 18. 1. 2010, 13:51:01
tej prvej otazke som celkom nerozumel ale k tej druhej: Jednoducho ten odosielaci script daj do ineho suboru. Cize napriklad formular do ktoreho zadavas veci je v jednom subore a ked ten formular posles tak sa posle do inej stranky napr. z aaa.php (tam je formular) do bbb.php (tam sa to odosle)
|
||
Mirekkkk Profil * |
#3 · Zasláno: 18. 1. 2010, 14:44:06
blazej44800:
No když zadám do kolonky e-mail je správném tvaru, např. info@seznam.cz, tak mi to stále píše, at zadám email, ale když ho zadám špatně, třeba jenom info, tak se mi to bez problémů odešle |
||
Alphard Profil |
#4 · Zasláno: 18. 1. 2010, 17:33:10
Mirekkkk:
„No když zadám do kolonky e-mail je správném tvaru, např. info@seznam.cz, tak mi to stále píše, at zadám email, ale když ho zadám špatně, třeba jenom info, tak se mi to bez problémů odešle“ To vypadá na obrácenou podmínku. ereg("^ +$",$_POST["predmet"]) Znáte funkci trim()? |
||
Mirekkkk Profil * |
#5 · Zasláno: 18. 1. 2010, 19:49:18
Alphard:
Bohužel neznám, v php jsem zatím začátečník :( |
||
AM_ Profil |
#6 · Zasláno: 18. 1. 2010, 20:07:57 · Upravil/a: AM_
Technicky je problém tady:
elseif ($_POST["mail"]=="" || !ereg("^.+@.+\..+$",$_POST["mail"])) { Fakticky je ale problém tak trochu celý skript, pokud jsi začátečník, začínáš ze špatného konce. Např. - funkce ereg je zastaralá, nevím, kde jsi si ji nastudoval, ale chtělo by to aktuálnější materiály, PHP se dost rychle vyvíjí. - php se obvykle otvírá sekvencí <?php , takzvaný short_open_tag <? se nedoporučuje používat, na některých serverech je vypnutý. - psát PHP funkci na to, aby ti vypsala kus HTML, je dost krkolomné; já bych to celé předělal asi takto: <?php $err = ''; if (!empty($_POST)) { if (trim($_POST["jmeno"])=="") { $err .= "Zadejte prosím své jméno.<br>"; } if (trim($_POST["mail"])=="" || !preg_match("/^.+@.+\..+$/",$_POST["mail"])) { $err .= "Zadejte prosím svůj mail.<br>"; } if (trim($_POST["predmet"])=="") { $err .= "Zadejte prosím předmět.<br>"; } if (trim($_POST["text"])=="") || strlen($_POST["text"]) > 500) { $err .= "Text e-mailu by měl být v rozmezí 1-500 znaků.<br>"; } if ($err == '') { Mail ("blabla@seznam.cz",$_POST["predmet"],$_POST["text"],"From: " . $mail . "\r\n"); echo "E-mail byl úspěšně odeslán."; } } ?> <p><?php echo $err; ?></p> <form method="post" action="formular.php"> <p> Jméno:<br> <input name="jmeno" value="<?php echo htmlspecialchars($_POST['jmeno']); ?>"><br> Mail:<br> <input name=mail value="<?php echo htmlspecialchars($_POST['$mail']); ?>"><br> Předmět:<br> <input name=predmet value="<?php echo htmlspecialchars($_POST['$predmet']); ?>"><br> Text zprávy<br> <textarea style="width:200px; height:150px;" name="text"><?php echo htmlspecialchars($_POST['$text']); ?></textarea><br><br> <input type="submit" name="mailform" value="Odeslat"> </p> </form> |
||
Časová prodleva: 14 let
|
0