8768 sujets

Développement web côté serveur, CMS

Bonjour à tous et toutes,

J'ai besoin des lumières d'un pro, je n'arrive pas à rendre opérationnel mon formulaire de contact html5 avec un fichier php pour l'envoi, je met les deux codes ci dessous.
Si quelqu'un peu m'éclairer, je lui en serais reconnaissant.

<form action="index.php" method="post">
						<div class="row uniform 50%">
							<div class="6u 12u$(xsmall)">
								<input type="text" name="name" id="name" placeholder="Nom" />
							</div>
							<div class="6u$ 12u$(xsmall)">
								<input type="email" name="email" id="email" placeholder="Email" />
							</div>
							<div class="12u$">
								<textarea name="message" id="message" placeholder="Message" rows="8"></textarea>
							</div>
							<div class="12u$">
								<ul class="actions">
									<li><input type="submit" value="Envoyer" /></li>
								</ul>
							</div>
						</div>
					</form>



Et le php associé

<?php
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $from = 'CDA'; 
    $to = 'monmail@gmail.com'; 
    $subject = 'Formulaire CDA';
			
    $body = "From: $name\n E-Mail: $email\n Message:\n $message";
				
if ($_POST['submit']) {
    if (mail ($to, $subject, $body, $from)) { 
        echo '<p>votre email à été envoyé!</p>';
    } else { 
        echo '<p>Email non envoyé!</p>'; 
    }
}
?>


Merci mille fois, cdlt.
Bonjour,

A première vue, le soucis vient d'ici
waib a écrit :

if ($_POST['submit']) {
En effet vous vérifiez une donnée non envoyée vu que votre bouton envoyé ne contient pas d'attribut name.

En fait cette condition ne sert strictement à rien car lorsque le formulaire est soumit, il appelle votre page php et donc cela signifie qu'il y a bien eu soumission ; CQFD !

Simplifiez par

[...]
    $body = "From: $name\n E-Mail: $email\n Message:\n $message";
				

    if (mail ($to, $subject, $body, $from)) { 
        echo '&lt;p&gt;votre email à été envoyé!&lt;/p&gt;';
    } else { 
        echo '&lt;p&gt;Email non envoyé!&lt;/p&gt;'; 
    }
?>


Vous auriez d'ailleurs pus le vérifier en ajoutant ceci
if ($_POST['submit']) {
    if (mail ($to, $subject, $body, $from)) { 
        echo '&lt;p&gt;votre email à été envoyé!&lt;/p&gt;';
    } else { 
        echo '&lt;p&gt;Email non envoyé!&lt;/p&gt;'; 
    }
} else {
    echo 'HA HA HA la bonne blague !';
}

Modifié par Greg_Lumiere (03 May 2017 - 09:46)
Modérateur
Je n’enlèverais pas la vérification du $_POST, autrement il va se faire spammer par tous les robots qui passent par là. Par contre il faut vérifier une donnée envoyée dans le POST, par exemple:

if (isset($_POST['message']) {
}
Un instant j'avais en tête ce sujet Réponse reCaptcha ?.

Comme le suggère Kustolovic, Waib, pensez à vérifier vos données transmises. Vous devriez d'ailleurs vous inspirer du sujet précédemment cité.