Autor Zpráva
robbie
Profil *
Marně si lámu hlavu, pročpak to nefunguje, jednoduchý script na formulář:

if(isset($_POST['jmeno'])&&($_POST['adresa'])&&($_POST['mesto'])&&($_POST['psc'])&&($_POST['email'])) {

  $jmeno = $_POST['jmeno'];
  $adresa = $_POST['adresa'];
  $mesto = $_POST['mesto'];
  $psc = $_POST['psc']; 
  $email = $_POST['email'];
  
  if (!empty("jmeno") && !empty("adresa") && !empty("mesto") && !empty("psc")&& !empty("email")){
     
      $to="michelin333@seznam.cz";
      $subject="Žádost o zaslání Petice-formuláře";
      $body = "Jméno a příjmení:".$jmeno.'\n'."Adresa:".$adresa.'\n'."Město:".$mesto.'\n'."PSČ:".$psc;
      $headers="From:".$email;
      
  
  

 if(mail($to,$subject,$body, $headers)){
    echo "Formulář byl úspěšně odeslán. Petici Vám zašleme co nejdříve.";
    } else{ echo"Chyba. Formulář nebyl odeslán!";
    } 
       
    }else{
     echo "Prosím vyplňte všechna pole!";
    }
 }
    
?>

Tenhle php soubor mam samozřejme ve slozce s index.html a po odeslání dat je prázdná stránka a mail nedojde. Lámu si s tím hlavu,a le proste uz nevím.
denCo
Profil
empty("email"),empty("psc") je čo sa funkciu? formulár vždy odošle všetky hodnoty, preto prvá podmienka je úplne zbytočná...
 $jmeno = $_POST['jmeno'];
  $adresa = $_POST['adresa'];
  $mesto = $_POST['mesto'];
  $psc = $_POST['psc']; 
  $email = $_POST['email'];
  
  if (!empty($jmeno) && !empty($adresa) && !empty($mesto) && !empty($psc)&& !empty($email)){
     
      $to="michelin333@seznam.cz";
      $subject="Žádost o zaslání Petice-formuláře";
      $body = "Jméno a příjmení:".$jmeno.'\n'."Adresa:".$adresa.'\n'."Město:".$mesto.'\n'."PSČ:".$psc;
      $headers="From:".$email;
      
  
  
 
 if(mail($to,$subject,$body, $headers)){
    echo "Formulář byl úspěšně odeslán. Petici Vám zašleme co nejdříve.";
    } else{ echo"Chyba. Formulář nebyl odeslán!";
    } 
       
    }else{
     echo "Prosím vyplňte všechna pole!";
    }
 }
    
?>
robbie
Profil *
je tam !empty , a jak to prosím vyřeší muj problém, že script nic neodešle do emailu?
Jan Tvrdík
Profil
robbie:
Pokud nemáš PHP 5.5 a novější, tak skript uvedený v prvním příspěvku skončí parse errorem, tedy se vůbec neprovede.
Joker
Profil
denCo:
formulár vždy odošle všetky hodnoty, preto prvá podmienka je úplne zbytočná
Odešle ty, které existují ve formuláři. Takže ta podmínka zbytečná není.

robbie:
po odeslání dat je prázdná stránka a mail nedojde
Viz Jan Tvrdík, !empty("jmeno") je jednak nesmysl (řetězec "jmeno" nikdy není prázdný, takže nemá smysl takovou podmínku vůbec testovat) a jednak do PHP 5.5 to je chyba syntaxe (empty vyhodnocuje pouze proměnné).

Doporučuji pro vývoj skriptů používat prostředí se zapnutým display_errors a s error_reporting = -1 (nebo E_ALL od PHP 5.4).
robbie
Profil *
Tak jsem to trošku překopal, ale stejně mic nic do mailu nedojde a po odeslání dat z formuláře se zobrazí stránka, kde jsou špatně zobrazení české znaky, napíše to , že formulář odeslán, ale v mailu nic nemám. Adresu meho mailu mám dobře, tak nevím jak dál.

 <?php
if(isset($_POST['jmeno'])&&($_POST['adresa'])&&($_POST['mesto'])&&($_POST['psc'])&&($_POST['email'])) {

  $jmeno = $_POST['jmeno'];
  $adresa = $_POST['adresa'];
  $mesto = $_POST['mesto'];
  $psc = $_POST['psc']; 
  $email = $_POST['email'];
  
 
if(mail($to,$subject,$body, $headers)){
 
      $to="michelin333@seznam.cz";
      $subject="ŽŽádost o zaslání Petice-formuláře";
      $body = "Jméno a příjmení:".$jmeno.'\n'."Adresa:".$adresa.'\n'."Město:".$mesto.'\n'."PSČ:".$psc;
      $headers="From:".$email;
      echo "Formulář byl úspěšně odeslán. Petici Vám zaššleme co nejdříve.";
    } else{ echo"Chyba. Formulář nebyl odeslán!";
    } 
       
    
    
 }
    
?>
juriad
Profil
Řádky 13 až 16 přesuň před odeslání emailu (10. řádek).
A body změň na:
      $body = "Jméno a příjmení:".$jmeno."\nAdresa:".$adresa."\nMěsto:".$mesto."\nPSČ:".$psc;
\n musí být uvnitř dvojitých uvozovek, jinak nemá význam nového řádku.
robbie
Profil *
hmm taky nefunguje

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