Bonjour,
J'ai acheté un template en HTML5 CSS3 que j'ai légèrement adapté afin d'y ajouter 1 formulaire de souscription à ma newsletter.
Voici le code du formulaire à titre d'info:
<!-- NEWSLETTER -->
<div class="grid_3">
<h3 class="ft_title">Newsletter subscription</h3>
<form action="newsletter.php" method="POST">
<p>Nom (*)<br>
<input type="text" class="button black newsletter" name="Name" size=30>
<br>Votre adresse email (*)<br>
<input type="text" class="button black newsletter" name="Email" size=30>
<br><br><input type="submit" class="button black contact_submit" value=" Envoyer "></p>
</form>
</div>
<!-- END NEWSLETTER -->
et voici le code du fichier PHP qui envoie le résultat (fichier trouvé sur le web et adapté pour une redirection vers des pages "merci" ou "erreur" plutôt qu'un bête message d'erreur sur page blanche):
<?php
## CONFIG ##
# LIST EMAIL ADDRESS
$recipient = "mon.adresse.mail@mon_fai.fr";
# SUBJECT (Subscribe/Remove)
$subject = "Subscribe";
# RESULT PAGE
$location = "merci.html";
$location1 = "erreur.html";
## FORM VALUES ##
# SENDER
$email = $_REQUEST['Email'] ;
# MAIL BODY
$body .= "Nom: ".$_REQUEST['Name']." \n";
$body .= "Email: ".$_REQUEST['Email']." \n";
# add more fields here if required
## TEST & SHOW RESULT PAGE IF OK ##
if ($Name && $Email) {
header( "Location: $location" );
}
else {
header( "Location: $location1" );
}
## SEND MESSAGE ##
mail( $recipient, $subject, $body, "From: $email" ) or die ("Mail could not be sent.");
?>
Mon problème: lorsqu'on ne rempli rien dans les champs et que l'on clique sur "envoyer", on a bien la redirection vers la page d'erreur mais je reçois malgré tout un mail vierge ce que, évidemment je veux éviter. Si quelqu'un peut m'aider à améliorer cela (je suis nul en PHP) ça serait très sympa.
J'aurais bien aimé qu'un message d'erreur s'affiche sous le/les champs manquants (pas à côté car pas de place) mais je ne sais pas comment réaliser cela et n'ai rien trouvé sur le web pour me guider non plus, donc j'ai procédé à une simple redirection $location et $location1 suivant le résultat. Si parmi vous vous un gourou sait comment réaliser cette prouesse, avec moult détails, je suis preneur aussi

) mais comme ma solution fonctionne bien je m'en conterais si je pouvais éviter le problème cité ci-dessus.
J'ajoute pour être complet que j'ai aussi essayé le contrôle des champs par un javascript mais ça ne fonctionne pas. Il paraît que la fonction "onsubmit" ne fonctionne pas dans <FORM>. Ce n'est pas grave mais c'est pour dire que j'ai essayé de tout...
Merci d'avance pour votre aide