Autor Zpráva
kikinet
Profil
Zdravím,
mohl by se někdo kouknout na php k formuláři? Při kliknutí na tlačítko odeslat mi to vypíše ,,Chyba serveru. Při načítání adresy http://alzbetasklarova.cz/formular.php narazily stránky na chybu. Na této adrese možná právě probíhá údržba stránek, nebo jsou stránky chybně nakonfigurovány."
V hlavičce mám navíc ještě js, který jen vyhazuje alert na stejné podmínky jako php. V těle je potom samostatné php a formulář. Bohužel nevím proč mi to nejede.
Tady je php
<?php
      $to = "betkasklarova@seznam.cz";
      $subject = "Jméno: ".$jmeno."/nE-mail: ".$mail."/n"$zprava;
 
      if($odeslano == true)
        {if(substr_count($mail, '@') >= 2) 
          echo "Zadali jste neplatnou e-mailovou adresu";
         elseif ($mail=="" || $jmeno=="" || $zprava=="")
          echo "Zkontrolujte prosím zda máte vyplněné všechny pole";
         else
          echo "Zpráva byla úspěšně odeslána";}
      mail($to, $jmeno, $mail, $zprava)
    ?>
A zde je formulář
<form action="formular.php" method="post" onSubmit="return validate(this)">
         <table>
          <tr><td><b>Jméno:</b></td><td><input type="text" name="<?php echo $jmeno ?>" size="39"></td></tr>
           <tr><td><b>E-mail:</b></td><td><input type="text" name="<?php echo $mail ?>" size="39" value="@"></td></tr>
           <tr><td><b>Zpráva:</b></td><td><textarea name="<?php echo $zprava ?>" rows="8" cols="31"></textarea></td></tr>
           <tr><td></td><td align="right"><input type="submit" name="odeslano" value="Odeslat"></td></tr>
         </table>
      </form>
A tady je odkaz na stránku s formulářem
Předem děkuju
ShiraNai7
Profil
kikinet:
1) chyba syntaxe na radku 2: chybi tecka pred $zprava
2) radky 10 az 12: volani mail() by melo byt v poslednim else bloku, jinak se zavola pokazde bez ohledu na jakoukoliv predchozi validaci
3) nespolehat na register_globals
Tori
Profil
4) zalomení řádku se píše \n (máte opačné lomítko)
ShiraNai7
Profil
kikinet, Tori:
5) do předmětu emailu nepatří odřádkování (ani by tam nefungovalo)
kikinet
Profil
ShiraNai7, Tori:
Tak jsem to teda opravila, ale dělá to pořád stejnou chybu :/ Pokud si otevřu jen ten samostatný soubor Kontakt.html kde je formulář s action=formular.php tak mi aspoň něco vypíše, ale na webových stránkách ne. Nehledě na to že pokud odešlu formulář (ať už prázdný nebo vyplněný) vypíše mi to:

= 2) echo "Zadali jste neplatnou e-mailovou adresu"; elseif ($mail=="" || $jmeno=="" || $zprava=="") echo "Zkontrolujte prosím zda máte vyplněné všechny pole"; else (mail($to, $mess)) echo "Zpráva byla úspěšně odeslána";} ?>

a ne samostatné echo. Nevíte co s tím?


Opravené php pak vypadá takhle
<?php
         $to = "betkasklarova@seznam.cz";
         $mess = "Jméno: ".$jmeno."\nE-mail: ".$mail."\n".$zprava;
         if($odeslano == true)
          {if(substr_count($mail, '@') >= 2) 
             echo "Zadali jste neplatnou e-mailovou adresu";
           elseif ($mail=="" || $jmeno=="" || $zprava=="")
              echo "Zkontrolujte prosím zda máte vyplněné všechny pole"
            else (mail($to, $mess))
              echo "Zpráva byla úspěšně odeslána";}
?>
Jan Tvrdík
Profil
kikinet:
<?php
$to = "betkasklarova@seznam.cz";
$mess = "Jméno: " . $jmeno . "\n"
      . "E-mail: " . $mail . "\n"
      . $zprava;

if ($odeslano) {
    if (substr_count($mail, '@') != 1)
        echo "Zadali jste neplatnou e-mailovou adresu.";
    elseif ($mail == "" || $jmeno == "" || $zprava == "")
        echo "Zkontrolujte prosím zda máte vyplněné všechny pole.";
    elseif (mail($to, $mess))
        echo "Zpráva byla úspěšně odeslána.";
    else
        echo "Zprávu se nepodařilo odeslat.";
}
kikinet
Profil
Jan Tvrdík:
Ani takhle nic...

Stránka kontakt mi normálně naběhne, ale při zaslání formuláře mi vypíše chybu. Nevím jak víc to upravit. Můžu vám tu maximálně dát ještě kompletní obsah toto souboru s PHP, ale nevím o co víc z toho budete chytřejší... :/

Formular.php
<html>
<head>
  ...
  <script></script>
  ...
</head>
<body>
  ...
  ...
  <p style="color: white; font-weight: bold">
  <?php
     $to = "betkasklarova@seznam.cz";
     $mess = "Jméno: ".$jmeno. "\n" .E-mail: ".$mail. "\n".$zprava;
 
     if($odeslano) {
       if(substr_count($mail, '@') != 1) 
          echo "Zadali jste neplatnou e-mailovou adresu.";
       elseif ($mail=="" || $jmeno=="" || $zprava=="")
          echo "Zkontrolujte prosím zda máte vyplněné všechny pole.";
        elseif (mail($to, $mess))
          echo "Zpráva byla úspěšně odeslána.";
        else
          echo "Zprávu se nepodařilo odeslat. Zkuste to prosím znovu."
     }
  ?>
  </p>
   <form action="formular.php" method="post" onSubmit="return validate(this)">
   <table>
     <tr><td><b>Jméno:</b></td><td><input type="text" name="<?php echo $jmeno ?>" size="39"></td></tr>
     <tr><td><b>E-mail:</b></td><td><input type="text" name="<?php echo $mail ?>" size="39" value="@"></td></tr>
     <tr><td><b>Zpráva:</b></td><td><textarea name="<?php echo $zprava ?>" rows="8" cols="31"></textarea></td></tr>
     <tr><td></td><td align="right"><input type="submit" name="odeslano" value="Odeslat"></td></tr>
   </table>
   </form>
   ...
   ...
   ...
</body>
</html>
Tori
Profil
chybí uvozovka $mess = "Jméno: ".$jmeno. "\n" ."E-mail: ".$mail. "\n".$zprava;


A tohle taky není uplně ok: mail($to, $mess) - chybí jeden parametr s předmětem zprávy, mezi těmi dvěma.
kikinet
Profil
Tori:
Takže přidat $subject a začlenit do mail()?
$subject = "WEB - zpráva od: " .$jmeno;
(mail($to, $subject, $mess))

Tak žádná změna... Pořád mi to cháže chybu serveru

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: