| 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: 17 let
|
|||
0