Petit problème d'envoi de formulaire non rempli

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Petit problème d'envoi de formulaire non rempli

Re: Petit problème d'envoi de formulaire non rempli

par dix2 » 11 mars 2012, 21:36

j't'en prie :wink:

bonne soirée
dix2

Re: Petit problème d'envoi de formulaire non rempli

par mvh » 11 mars 2012, 21:27

Cool ça marche nickel et sans erreur !
Merci beaucoup pour ton aide précieuse :)

Re: Petit problème d'envoi de formulaire non rempli

par dix2 » 11 mars 2012, 21:21

essaie ce code là, ça devrait fonctionner
<?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
$name = $_REQUEST['Name'] ;
$email = $_REQUEST['Email'] ;
# MAIL BODY
$body = 'Nom: '.$name." \n";
$body .= 'Email: '.$email." \n";
# add more fields here if required
## TEST & SHOW RESULT PAGE IF OK & SEND MESSAGE ##
if (($name != '') && ($email != '') && mail( $recipient, $subject, $body, 'From: '.$email )) {
  header( "Location: $location" );
}
else {
  header( "Location: $location1" );
}
?>

Re: Petit problème d'envoi de formulaire non rempli

par mvh » 11 mars 2012, 21:11

Toujours négatif avec ta second modification. je ne reçois rien.

J'ai remis mon fichier original pour voir, et bien que j'ai aboutis à la page erreur, je reçois bien le mail dans ma boîte

Re: Petit problème d'envoi de formulaire non rempli

par dix2 » 11 mars 2012, 20:25

essaie ça pour vérifier que la fonction mail fonctionne bien :
<?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 & SEND MESSAGE ##
if ($Name && $Email) {
  mail( $recipient, $subject, $body, "From: $email" );
  header( "Location: $location" );
}
else {
  header( "Location: $location1" );
}
?>

Re: Petit problème d'envoi de formulaire non rempli

par mvh » 11 mars 2012, 20:19

Merci beaucoup pour la réponse rapide mais à présent je ne reçois plus rien et j'arrive systématiquement sur la page erreur :(

Re: Petit problème d'envoi de formulaire non rempli

par dix2 » 11 mars 2012, 20:02

salut,

il peut arriver que la fonction mail plante
le mieux est donc de la rajouter dans la condition du if comme ci-dessous :
<?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 & SEND MESSAGE ##
if ($Name && $Email && mail( $recipient, $subject, $body, "From: $email" )) {
  header( "Location: $location" );
}
else {
  header( "Location: $location1" );
}
?>
@+
dix2

Petit problème d'envoi de formulaire non rempli

par mvh » 11 mars 2012, 19:41

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