Autor Zpráva
Mirekkkk
Profil *
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
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 *
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
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 *
Alphard:
Bohužel neznám, v php jsem zatím začátečník :(
AM_
Profil
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>

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: