Autor Zpráva
xarox
Profil
Ahoj,

dělám nové stránky (předělávám volně stažitelnou šablonu s responzivním designem) a snažím se rozchodit zpracování formuláře, které se odešle na mail. Adresa stránky je www.zlaty-klic.cz/kontakt.html. Vyzkoušel jsem již hodně skriptů, ale problém je ten, že ne a ne mi formulář zpracovat. Informace předávám metodou POST, ale chová se to jako GET a navíc mail ani nedorazí. Zde mám můj kód:

<form method="POST" action="mailform.php">
<input type="text" name="jmeno" placeholder="Jméno a příjmení:" required>
<input type="email" name="email" placeholder="Email:" required> 
<input type="number" name="antispam" placeholder="Kolik je 1 + 2 ? (ochrana proti spamu)" required>                        
<textarea name="zprava" placeholder="Vaše zpráva:" required></textarea>
<input type="submit" value="ODESLAT">
</form>

PHP vypadá následovně:

 <?php
 
    $to = "info@zlaty-klic.cz";
    $extra = "From: $email\r\nReply-To: $email\r\n";
    $subject = "Vzkaz od ".$jmeno."";
    $mess = "Jméno: ".$jmeno."\nZpráva:".$zprava."\nEmail: ".$email." \n";
        
        if ($_POST['antispam'] == 3)
        {

        mail ($to, $subject, $mess, $extra);

        }
                   
?>

Tato kombinace prostě nějak nefunguje. Nevím, zda je možné, aby mi použití formuláře blokoval nějaký JavaScript? Protože mám ověřeno, že funkce mail() normálně jde. Když jsem vytvořil samostatnou stránku http://zlaty-klic.cz/kontakt.php, tak formulář se zpracuje a mail příjde okamžitě - kód zde:

<?php 
if(isset($_POST['submit'])){
    $to = "info@zlaty-klic.cz"; // this is your Email address
    $from = $_POST['email']; // this is the sender's Email address
    $first_name = $_POST['first_name'];
    $last_name = $_POST['last_name'];
    $subject = "Form submission";
    $subject2 = "Copy of your form submission";
    $message = $first_name . " " . $last_name . " wrote the following:" . "\n\n" . $_POST['message'];
    $message2 = "Here is a copy of your message " . $first_name . "\n\n" . $_POST['message'];

    $headers = "From:" . $from;
    $headers2 = "From:" . $to;
    mail($to,$subject,$message,$headers);
    mail($from,$subject2,$message2,$headers2); // sends a copy of the message to the sender
    echo "Mail Sent. Thank you " . $first_name . ", we will contact you shortly.";
    // You can also use header('Location: thank_you.php'); to redirect to another page.
    }
?>

<!DOCTYPE html>
<head>
<title>Form submission</title>
</head>
<body>

<form action="" method="post">
First Name: <input type="text" name="first_name"><br>
Last Name: <input type="text" name="last_name"><br>
Email: <input type="text" name="email"><br>
Message:<br><textarea rows="5" name="message" cols="30"></textarea><br>
<input type="submit" name="submit" value="Submit">
</form>

</body>
</html> 

Díky za případné nápady co s tím :-)
mimochodec
Profil
Pro zpracování dat z formuláře nepoužívej $jmeno, ale $_POST["jmeno"]. A obdobně pro všechny ty inputy.
Taky doporučuju používat ne <form method="POST", ale <form method="post".
A nauč se izolovat problém. Máš formulář, neodchází mail. Mezi tím je několik věcí. Předají se data z formuláře? Je v těch proměnných $jmeno hodnota z formu? Myslím že není. Kdybys takhle postupoval, problém bys vyřešil i sám.
xarox
Profil
OK, díky, už to jede konečně :-)

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