Autor Zpráva
walkerpet
Profil
Dobrý den.

Tvořím si sám své stránky pro obchod a potřeboval bych poradit s formulářem. Jsem opravdu lajk a v programování se nevyznám. Formulář mi funguje jak má, ale neumím ho ošetřit.

Můj php kód formuláře

<?
$prijemce = "admin@akvaristikaskaskyostrava.cz";
$predmet = $_POST['predmet'];
$email = $_POST['email'];
$spam = $_POST['spam'];
$zprava = $_POST['zprava'];

if ($predmet!="" and $email!="" and $zprava!="" and $spam=="2")
{
Mail($prijemce, $predmet, $zprava, "From: " . $email);
header("location:http://www.akvaristikaskaskyostrava.cz/odeslano.html");} 
else
{
echo header("location:http://www.akvaristikaskaskyostrava.cz/neodeslano.html");
} 
?>

a samotný formulář

<form action="formular.php" method="post">

<p>Odesílatel:</p><input name="email" size="30" type="text">  <br>
<p>Předmět:</p><input name="predmet" size="30" type="text"> <br>
<p>Odpovězte: 1 + 1 =</p><input name="spam" size="23" type="text"> <br>
<p>Zpráva:</p><textarea name="zprava" rows="8" cols="50"></textarea>  <br>
<input type="submit" value="Odeslat">

</form>

Chtěl bych,aby byl formulář ošetřený proti útočníkům a když někdo zadá špatný tvar mailu nebo se pokusí odeslat prázdný formulář tak mu to stránka nepovolí. Zkoušel jsem to podle různých návodů, ale jak říkám opravdu jsem v programování laik a stránku mám jen pro jednoduchou prezentaci. Mohli byste mi napsat jak má vypadat kompletní kód ošetřeného formuláře?

Děkuji za pomoc.
Keeehi
Profil
<?php
if (!empty($_post["predmet"] and !empty($_post["zprava"] and !empty($_POST['email'])  and isset($_POST['spam']) and $_POST['spam']==2 and preg_match('~^[a-z0-9._%+-]+@[a-z0-9.-]+\.[A-Z]{2,4}$~i',$_POST["email"]))
    Mail("admin@akvaristikaskaskyostrava.cz", $_POST['predmet'], $_POST['zprava'], "From: " . $_POST['email']);
    header("location:http://www.akvaristikaskaskyostrava.cz/odeslano.html");} 
else
{
    echo header("location:http://www.akvaristikaskaskyostrava.cz/neodeslano.html");
} 
walkerpet
Profil
Keeehi:

Zkusil jsem to, ale pokaždé mi při poslání formuláře vyskočí tohle

Parse error: syntax error, unexpected T_LOGICAL_AND, expecting ')' in /data/web/virtuals/36408/virtual/www/formular.php on line 2

Zkusil jsem tam tu závorku různě doplnovat, ale pak skáčou zase jiné chyby.
jenikkozak
Profil
Začátek té podmínky má být:
if (!empty($_post["predmet"]) and !empty($_post["zprava"]) and
walkerpet
Profil
jenikkozak:
:-D když to přepíšu tak se mi zobrazí zase taková chyba

Parse error: syntax error, unexpected '}' in /data/web/virtuals/36408/virtual/www/formular.php on line 4

a když smažu i tu závorku naskočí tohle

Parse error: syntax error, unexpected T_ELSE in /data/web/virtuals/36408/virtual/www/formular.php on line 5

Tak už fakt nevím.
jenikkozak
Profil
Chybí otevírací složená závorka na konci druhého řádku. (Ta co končí na čtvrtém řádku.)
walkerpet
Profil
Tohle už fungovalo děkuju. jen se mi při odeslání formuláře nenačte stránka www.akvaristikaskaskyostrava.cz/odeslano.html, ale neodeslano..vše vyplnuju správně tak není ještě problém v těch podmínkách? Vím, že s tím už otravuju, ale chtěl bych to mít už hotové.
Keeehi
Profil
Jejda, nepřečetl jsem si to po sobě a teď se za to stydím.
Toto bude lepší:
<?php
if (!empty($_POST["predmet"]) and !empty($_POST["zprava"]) and !empty($_POST['email']) and isset($_POST['spam']) and $_POST['spam']==2 and preg_match('~^[a-z0-9._%+-]+@[a-z0-9.-]+\.[A-Z]{2,4}$~i',$_POST["email"])) {
    Mail("admin@akvaristikaskaskyostrava.cz", $_POST['predmet'], $_POST['zprava'], "From: " . $_POST['email']);
    header("location:http://www.akvaristikaskaskyostrava.cz/odeslano.html");
    exit;
} else {
    header("location:http://www.akvaristikaskaskyostrava.cz/neodeslano.html");
    exit;
} 

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0