Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/01/2011, 13h32   #1
Invité de passage
 
Inscription : avril 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 5
Points : 1
Points : 1
Par défaut Envoi de formulaire par mail

bonjour à tous, Meilleurs voeux,

Je ma suis inspiré d'un Tutorial sur ce site pour faire un faire un formulaire de contact dont le code est ci-dessous. Le participant au concours choisi l'une des trois catégories (Enseignement, Groupe, Individuel) puis compète ses coordonnées avant d'envoyer le formulaire.

A plusieurs reprises, j'ai remplis les champs et envoyé le formulaire mais rien ne se produit (Aucun message et je ne reçois rien sur la boite mail que j'ai précisée).

Quelqu'un pourrait m'aider SVP?

Merci

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
<?php
/* Si le formulaire est envoyé alors on fait les traitements */
if (isset($_POST['envoye']))
{
    /* Récupération des valeurs des champs du formulaire */
    if (get_magic_quotes_gpc())
    {
      $nom_etablissement	    = stripslashes(trim($_POST['nom_etablissement']));
      $classe					= stripslashes(trim($_POST['classe']));
      $nom_groupe				= stripslashes(trim($_POST['nom_groupe']));
	  $nom_responsable			= stripslashes(trim($_POST['nom_responsable']));
      $nom						= stripslashes(trim($_POST['nom']));
	  $prenom					= stripslashes(trim($_POST['prenom']));
	  $categorie				= stripslashes(trim($_POST['categorie']));
	  $adresse					= stripslashes(trim($_POST['adresse']));
	  $codepostal				= stripslashes(trim($_POST['codepostal']));
	  $ville					= stripslashes(trim($_POST['ville']));
	  $tel						= stripslashes(trim($_POST['tel']));
	  $email					= stripslashes(trim($_POST['email']));
    }
    else
    {
      $nom_etablissement	    = trim($_POST['nom_etablissement']);
      $classe					= trim($_POST['classe']);
      $nom_groupe				= trim($_POST['nom_groupe']);
  	  $nom_responsable			= trim($_POST['nom_responsable']);
      $nom						= trim($_POST['nom']);
	  $prenom					= trim($_POST['prenom']);
	  $categorie				= trim($_POST['categorie']);
	  $adresse					= trim($_POST['adresse']);
	  $codepostal				= trim($_POST['codepostal']);
	  $ville					= trim($_POST['ville']);
	  $tel						= trim($_POST['tel']);
	  $email					= trim($_POST['email']);
    }
 
    /* Expression régulière permettant de vérifier si le format d'une adresse e-mail est correct */
    $regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i';
 
    /* Expression régulière permettant de vérifier qu'aucun en-tête n'est inséré dans nos champs */
    $regex_head = '/[\n\r]/';
 
    /* Si le formulaire n'est pas posté de notre site on renvoie vers la page d'accueil */
	if($_SERVER['HTTP_REFERER'] != 'URL du formulaire')
    {
      header('Location: URL du formulaire');
    }
    /* On vérifie que tous les champs sont remplis */
    elseif (empty($adresse) 
	    || empty($codepostal)
		|| empty($ville)
        || empty($tel)   
		|| empty($email)
		 )
    {
      $alert = '<strong>Veuillez précisez vos coordonnées</strong>';
    }
    /* On vérifie que le format de l'e-mail est correct */
    elseif (!preg_match($regex_mail, $email))
    {
      $alert = 'L\'adresse '.$emailr.' n\'est pas valide';
    }
    /* On vérifie qu'il n'y a aucun header dans les champs */
    elseif (preg_match($regex_head, $email) 
            || preg_match($regex_head, $nom_etablissement) 
			|| preg_match($regex_head, $classe) 
            || preg_match($regex_head, $nom_groupe) 
            || preg_match($regex_head, $nom_responsable) 
            || preg_match($regex_head, $nom) 
            || preg_match($regex_head, $prenom) 
	        || preg_match($regex_head, $categorie) 
			|| preg_match($regex_head, $adresse)
			|| preg_match($regex_head, $codepostal)
			|| preg_match($regex_head, $ville)
			|| preg_match($regex_head, $tel)			
			)
    {
        $alert = '<strong>En-têtes interdites dans les champs du formulaire</strong>';
    }
    /* Si aucun problème et aucun cookie créé, on construit le message et on envoie l'e-mail */
    elseif (!isset($_COOKIE['sent']))
    {
        /* Destinataire (votre adresse e-mail) */
        $to = 'adresse mail du destinataire';
 
		/* En-têtes de l'e-mail */
        $headers = 'From: '.$nom.' <'.$email.'>'."\r\n\r\n";
 
 
        /* Construction du message */
        $msg .= 'Mail provenant de (URL du site). Il vous a été envoyé par '."\r\n\r\n";
		$msg .= 'Participant ENSEIGNEMENT:'."\r\n\r\n";
		$msg .= 'Etablissement: '.$nom_etablissement."\r\n";
		$msg .= 'Classe: '.$classe."\r\n"; 
		$msg .= 'Participant GROUPE: '."\r\n\r\n";
		$msg .= 'Nom du groupe: '.$nom_groupe."\r\n";
		$msg .='Nom du responsable ='.$nom_responsable."\r\n"  ;
		$msg .= 'Participant INDIVIDUEL:' ."\r\n\r\n";
		$msg .= 'Nom : '.$nom."\r\n";
		$msg .= 'Prénom: '.$prenom."\r\n";
		$msg .= 'categorie :' .$categorie."\r\n\r\n"  ;
		$msg .= 'Adresse: '.$adresse."\r\n";
		$msg .= 'Code postal, ville: '.$codepostal.' '.$ville."\r\n";
		$msg .= 'Tel: '.$tel."\r\n";
		$msg .= 'Mail: '.$email."\r\n\r\n";
 
 
       	/* Envoi de l'e-mail */
        if (mail($to,/* $objet, $renseignement,*/ $msg, $headers)==true)
        {
            $alert = '<strong>Votre demande a été envoyée avec succès. Nous vous confirmerons votre participation dans les plus brefs délais</strong>';
 
            /* On créé un cookie de courte durée (ici 120 secondes) pour éviter de renvoyer un mail en rafraichissant la page */
            setcookie("sent", "1", time() + 120);
 
            /* On détruit la variable $_POST */
            unset($_POST);
        }
        else
        {
            $alert = '<strong>Une erreur s\'est produite lors de l\'envoi de votre demande. Veuillez réessayer</strong>';
        }
 
    }
    /* Cas où le cookie est créé et que la page est rafraîchie, on détruit la variable $_POST */
    else										
    {
        unset($_POST);
    } 
}
?> 
 
 
 
<div id="contact"><!-- FORMULAIRE CONTACT -->
 
<?php
if (!empty($alert))
{
    echo '<p style="color:red">'.$alert.'</p>';
}
?>
 
<FORM ACTION="contact-concours.php" METHOD="post">			
 
	   <fieldset>
       <legend>ENSEIGNEMENT</legend>
	<table border="0" cellpadding="0" cellspacing="0" summary="" align="center">
	<tr> 
		<td width="200"><label for="nom_etablissement">Nom établissement</label></td>
		<td><input type="text" name="nom_etablissement" id="nom_etablissement" size="50" value="<?php echo (isset($_POST['nom_etablissement'])) ? $nom_etablissement : '' ?>"/></td>
	</tr>
	<tr>
		<td><label for="classe">Classe</label></td>
		<td><input type="text" name="classe" id="classe" size="50" value="<?php echo (isset($_POST['classe'])) ? $classe : '' ?>"/></td>
	</tr>
	</table>
	</fieldset>
	<fieldset>
	<legend>GROUPE</legend>
	<table border="0" cellpadding="0" cellspacing="0" summary="" align="center">
	<tr>
		<td width="200"><label for="nom_groupe">Nom du groupe</label></td>
		<td><input type="text" name="nom_groupe" id="nom_groupe" size="50" value="<?php echo (isset($_POST['nom_groupe'])) ? $nom_groupe : '' ?>"/></td>
	</tr>
	<tr>
		<td><label for="nom_responsable">Nom du responsable</label></td>
		<td><input type="text" name="nom_responsable" id="nom_responsable" size="50" value="<?php echo (isset($_POST['nom_responsable'])) ? $nom_responsable : '' ?>"/></td>
	</tr> 
	</table>
	</fieldset>
	<fieldset>
	<legend>INDIVIDUEL</legend>
	<table border="0" cellpadding="0" cellspacing="0" summary="" align="center">	
	<tr>
		<td width="200"><label for="nom">Nom</label></td>
		<td><input type="text" name="nom" id="nom" size="50" value="<?php echo (isset($_POST['nom'])) ? $nom : '' ?>"/></td>
	</tr>
	<tr>
		<td><label for="prenom">Prénom</label></td>
		<td><input type="text" name="prenom" id="prenom" size="50" value="<?php echo (isset($_POST['prenom'])) ? $prenom : '' ?>"/></td>
	</tr>
	<tr>
		<td><label for="categorie">Catégorie (Adulte, Adolescent ou Enfant)</label></td>
		<td><input type="text" name="categorie" id="categorie" size="50"value="<?php echo (isset($_POST['categorie'])) ? $categorie : '' ?>"/></td>
	</tr>
</table> 
</fieldset>
 
<fieldset>
<legend>Vos coordonnées</legend>
<table>
	<tr>
		<td width="200"><label for="adresse">Adresse</label></td>
		<td><input type="text" name="adresse" id="adresse" size="50" value="<?php echo (isset($_POST['adresse'])) ? $adresse : '' ?>"/></td>
	</tr>
	<tr>
		<td><label for="codepostal">Code postal</label></td>
		<td><input type="text" name="codepostal" id="codepostal" size="50" value="<?php echo (isset($_POST['codepostal'])) ? $codepostal : '' ?>"/></td>
	</tr>
	<tr>
		<td><label for="ville">Ville</label></td>
		<td><input type="text" name="ville" id="ville" size="50" value="<?php echo (isset($_POST['ville'])) ? $ville : '' ?>"/></td>
	</tr>
	<tr>
		<td><label for="tel">Tél.</label></td>
		<td><input type="text" name="tel" id="tel" size="50" value="<?php echo (isset($_POST['tel'])) ? $tel : '' ?>"/></td>
	</tr>
	<tr>
		<td><label for="email">Mail</label></td>
		<td><input type="text" name="email" id="email" size="50" value="<?php echo (isset($_POST['email'])) ? $email : '' ?>"/></td>
	</tr>
 
</table>  
</fieldset>
 
	<p align="center"> 
	<input type="submit" name="envoye" value="Envoyer" class="bouton"/>&nbsp;&nbsp;&nbsp;<input type="reset" name="effacer" value="Effacer" class="bouton">
	</p> 
</form>
IXORA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 15h49   #2
Membre confirmé
 
Avatar de Balbuzard
 
Inscription : août 2008
Messages : 374
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : août 2008
Messages : 374
Points : 210
Points : 210
Hello
Quelques remarques:
C'est plus pratique pour nous de présenter un code minimal. Il y a beaucoup de choses en trop dans ton code présenté qui sont superflues pour la découverte de ta solution.
Ne serait-ce pour toi, tu isoleras plus facilement la cause de ton problème si tu commences par un code minimal. Apparemment ici ce qui poses soucis est la fonction mail donc essaye uniquement avec celle-ci pour en être sûr.
Ensuite, la fonction mail d'après la doc renvoie un core de retour égal à TRUE si le mail a été accepté pour livraison, FALSE sinon. Donc si tu affiches la valeur retournée par la fonction, on aurait un renseignement supplémentaire: si côté PHP le mail est OK pour livraison.
Enfin, quel serveur de mail utilises-tu pour envoyer ton mail?
Bon courage!
Cheers!
__________________
ZORRO
Plus Vengeur que Masqué
Balbuzard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 13h48   #3
Membre actif
 
Avatar de Meloooo
 
Mélanie
Inscription : novembre 2008
Messages : 275
Détails du profil
Informations personnelles :
Nom : Mélanie
Âge : 22

Informations forums :
Inscription : novembre 2008
Messages : 275
Points : 178
Points : 178
Bonjour,
Il te manque quelques renseignement pour ton header :
Code :
1
2
3
4
 
     $headers .='Reply-To: adresse_de_reponse@fai.fr'."\n";
     $headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
     $headers .='Content-Transfer-Encoding: 8bit';
A vrai dire j'ai pas lu tout ton code, j'ai survolé, mais je ferais comme ca
Meloooo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h25.


 
 
 
 
Partenaires

Hébergement Web