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 23/05/2011, 14h19   #1
Invité de passage
 
Femme
Infographiste
Inscription : mai 2011
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Infographiste

Informations forums :
Inscription : mai 2011
Messages : 7
Points : 0
Points : 0
Par défaut problème formulaire mail

Bonjour !
Je viens sur ce forum car j'ai besoin d'aide.
je suis en train de créer mon premier site en html/css pour esperer rentrer en formation bientot (on m'a demander ça comme un test)
On ne m'à pas demander d'utiliser le PHP mais j'en ai besoin pour créer mon formulaire de contact. celui ci est finit mais je n'arrive pas à faire en sorte que lorsque l'on clique sur "soumettre" le message s'envoie sur mon mail.

voici mon code html au niveau de mon formulaire :

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
<div id="contact"><!--CORPS-->
<p class="formulaire"> <form method="post" action="traitement.php">
 
<p><select name="pays" id="pays" tabindex="10">
           <option value="M.">M.</option>
           <option value="Mme">Mme</option>
           <option value="Mlle">Melle</option>
       </select></p>
 
       <p><label for="Nom">Nom :</label>
 
       <input type="text" name="Nom" tabindex="20" /></p>
 
       <p><label for="Prenom">Prenom :</label>
 
       <input type="text" name="Prenom" tabindex="30" /></p>
 
       <p><label for="Mail">Mail :</label>
 
       <input type="text" name="Mail" tabindex="40"/></p>
 
<p><label for="message">Votre Message :</label>
 
<textarea type="text" name="message" tabindex="50"></textarea></p>
 
<input type="submit" />
 
</form>
 
   </p>
 
   </div>

et voici mon code php :

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
<?php
 
if(isset($_POST) && isset($_POST['civilite']) && isset($_POST['nom'] && isset($_POST['prenom'] && isset($_POST['mail'] && isset($_POST['message'])) {
        extract ($_POST);
        if (!empty(&civilite) && !empty(&nom) && !empty(&prenom) && !empty(&mail) !empty(&message)) {
                $message=str_replace("\'",'","'",$message);
                $destinataire="xxxxxxxxxxx@gmail.com";
                $sujet="Formulaire de contact";
                $msg="Un nouveau message est arrivé \n
                Civilite : $civilite \n
                Nom : $nom \n
                Prenom : $prenom \n
                Mail : $mail \n
                Message : $message";
                $entete="From: $nom $prenom \n Reply-to: $mail";
                mail($destinataire, $sujet, $msg, $entete);
                echo "Le mail a bien été envoyé."
    }
    else{
         echo "Vous n'avez pas rempli tout les champs";
    }
}
?>
marjo
 
Haut
Merci d'avance pour votre aide.


mille merci.
marjo.
marj0jo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 14h34   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Un exemple :
http://a-pellegrini.developpez.com/tutoriels/php/mail/
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 14h38   #3
Membre éclairé
 
Inscription : mai 2008
Messages : 359
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 359
Points : 397
Points : 397
Est-ce que tu as accès à la fonction mail() sur le serveur ?
Code :
  if (!empty(&civilite) && !empty(&nom) && !empty(&prenom) && !empty(&mail) !empty(&message)) {
au lieu de &civilite etc..., il faudrait utiliser $civilite
Tsilefy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 15h14   #4
Invité de passage
 
Femme
Infographiste
Inscription : mai 2011
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Infographiste

Informations forums :
Inscription : mai 2011
Messages : 7
Points : 0
Points : 0
sabotage,
merci pour le tuto mais je n'ai malheureusement pas le temps de le regarder car il faut que le site soit terminer demain ou mercredi au plus tard.

Tsilefy,
oui j'ai un mail voila.net mais je ne m'en sert pas.
ok je vais essayer avec "$"
marj0jo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 15h28   #5
Membre éclairé
 
Inscription : mai 2008
Messages : 359
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 359
Points : 397
Points : 397
Non, il faut vérifier si l'envoi de mail est permis sur le serveur que tu utilises.

Est-ce qu'un envoi simple d'email (sans tout le traitement des formulaires, avec utilisation directe de l'adresse email, de l'objet, du message etc) fonctionne?

Si l'hébergeur n'autorise pas l'envoi de mail par PHP (pour des raisons de lutte antispam etc ...), ton script ne marchera jamais (en tout cas chez cet hébergeur). Si tu lance le script en local (sur Wamp par ex), est-ce que tu as aussi un serveur de mail d'installé?
Tsilefy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 15h53   #6
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Citation:
merci pour le tuto mais je n'ai malheureusement pas le temps de le regarder car il faut que le site soit terminer demain ou mercredi au plus tard.
C'est clair que tu vas gagner du temps à bidouiller ton script actuel plutôt que de juste faire un essai avec un script qui fonctionne.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 15h55   #7
Invité de passage
 
Femme
Infographiste
Inscription : mai 2011
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Infographiste

Informations forums :
Inscription : mai 2011
Messages : 7
Points : 0
Points : 0
Tsilefy,
oui je pense car quand je met la balise "mailto" et que je clique dans mon formulaire sur soumettre" ça m'envoie dans une boite de messagerie style outlook (mais pour mac puisque je suis sous mac) et là la personne voit mon mail qui est placé directement dans "destinataire" mais je ne veut pas qu'il voit mon mail moi.... ni que de boite de messagerie s'ouvre.
je sait pas si c'est ça dont tu parlez.


par contre j'ai essayer avec $ mais ça ne marche toujours pas malheureusement.
marj0jo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 15h55   #8
Invité de passage
 
Femme
Infographiste
Inscription : mai 2011
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Infographiste

Informations forums :
Inscription : mai 2011
Messages : 7
Points : 0
Points : 0
Citation:
Envoyé par sabotage Voir le message
C'est clair que tu vas gagner du temps à bidouiller ton script actuel plutôt que de juste faire un essai avec un script qui fonctionne.
lire un tuto, le comprendre après la 3ème relecture, l'apprendre, le réaliser c'est bien plus long et compliquer que de me donner la solution directe...
marj0jo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 16h54   #9
Membre éclairé
 
Inscription : mai 2008
Messages : 359
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 359
Points : 397
Points : 397
Sabotage a raison. Lire le tuto te prendra une demi-heure au plus, et tu pourra copier/tester directement les exemples qui marchent (et ainsi tu auras la preuve que ce qui ne marche pas, c'est la config de ton serveur).
En l'occurrence, les liens mailto n'ont rien à voir avec PHP. Teste le 1er exemple du tutorial ("Mail de base"), s'il ne marche pas c'est ton serveur qui est en cause.
Tsilefy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 17h18   #10
Invité de passage
 
Femme
Infographiste
Inscription : mai 2011
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Infographiste

Informations forums :
Inscription : mai 2011
Messages : 7
Points : 0
Points : 0
Citation:
Envoyé par Tsilefy Voir le message
Sabotage a raison. Lire le tuto te prendra une demi-heure au plus, et tu pourra copier/tester directement les exemples qui marchent (et ainsi tu auras la preuve que ce qui ne marche pas, c'est la config de ton serveur).
En l'occurrence, les liens mailto n'ont rien à voir avec PHP. Teste le 1er exemple du tutorial ("Mail de base"), s'il ne marche pas c'est ton serveur qui est en cause.
Non car je ne comprend strictement rien au php et pour le moment je n'ai pas envie d'en savoir plus que ça j'ai déjà quelque difficulté avec le css et html, le css je l'ai appris il y à 1 semaine pile poile donc je ne vais pas me mélanger les pinceau avec du php, je sait que la balise mailto n'a rien a voir mais je ne peut pas me pencher sur le tuto avec moi ça ne durera pas une demie heure le temps que je comprenne mais bel et bien 3h voir plus.

personne sait me dit "au vu de ce formulaire, ton code php doit etre exactement ça" ???

merci d'avance
marj0jo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 17h33   #11
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 128
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 128
Points : 7 270
Points : 7 270
Bonsoir,
1- Tu as oublié un ";" après cette ligne
Citation:
echo "Le mail a bien été envoyé."
2- Tu utilise quoi comme serveur? as tu configuré ton SMTP?

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 17h58   #12
Invité de passage
 
Femme
Infographiste
Inscription : mai 2011
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Infographiste

Informations forums :
Inscription : mai 2011
Messages : 7
Points : 0
Points : 0
Citation:
Envoyé par andry.aime Voir le message
Bonsoir,
1- Tu as oublié un ";" après cette ligne

2- Tu utilise quoi comme serveur? as tu configuré ton SMTP?

A+.
j'ai changé mon code finalement j'ai betement copier/coller celui du tuto sans lire. j'ai juste changer biensure le mail, peut-être que j'ai loupé des trucs et qu'il fallait changé autre chose car ça marche toujours pas.

est ce que voila est un serveur ?
car en faite je charge mon dossier "images" et mes pages html ainsi que mon css sur mon hebergeur voila et c'est tout.
marj0jo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 18h01   #13
Invité de passage
 
Femme
Infographiste
Inscription : mai 2011
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Infographiste

Informations forums :
Inscription : mai 2011
Messages : 7
Points : 0
Points : 0
j'ai oublié de mettre le nouveau code, le voici donc :

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
 
<?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())
    {
      $civilite		= stripslashes(trim($_POST['civilite']));
      $nom	     	= stripslashes(trim($_POST['nom']));
      $expediteur	= stripslashes(trim($_POST['email']));
      $sujet		= stripslashes(trim($_POST['sujet']));
      $message		= stripslashes(trim($_POST['message']));
    }
    else
    {
      $civilite		= trim($_POST['civilite']);
      $nom		    = trim($_POST['nom']);
      $expediteur	= trim($_POST['email']);
      $sujet		= trim($_POST['sujet']);
      $message		= trim($_POST['message']);
    }
 
    /* 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'] != 'http://www.marjorie.laforest.voila.net/traitement.php')
    {
      header('Location: http://marjorie.laforest.voila.net/');
    }
    /* On vérifie que tous les champs sont remplis */
    elseif (empty($civilite) 
           || empty($nom) 
           || empty($expediteur) 
           || empty($sujet) 
           || empty($message))
    {
      $alert = 'Tous les champs doivent être renseignés';
    }
    /* On vérifie que le format de l'e-mail est correct */
    elseif (!preg_match($regex_mail, $expediteur))
    {
      $alert = 'L\'adresse '.$expediteur.' n\'est pas valide';
    }
    /* On vérifie qu'il n'y a aucun header dans les champs */
    elseif (preg_match($regex_head, $expediteur) 
            || preg_match($regex_head, $nom) 
            || preg_match($regex_head, $sujet))
    {
        $alert = 'En-têtes interdites dans les champs du formulaire';
    }
    /* 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 = 'marjo.laforest@gmail.com';
 
        /* Construction du message */
        $msg  = 'Bonjour,'."\r\n\r\n";
        $msg .= 'Ce mail a été envoyé depuis marjorie.laforest.voila.net par '.$civilite.' '.$nom."\r\n\r\n";
        $msg .= 'Voici le message qui vous est adressé :'."\r\n";
        $msg .= '***************************'."\r\n";
        $msg .= $message."\r\n";
        $msg .= '***************************'."\r\n";
 
        /* En-têtes de l'e-mail */
        $headers = 'From: '.$nom.' <'.$expediteur.'>'."\r\n\r\n";
 
        /* Envoi de l'e-mail */
        if (mail($to, $sujet, $msg, $headers))
        {
            $alert = 'E-mail envoyé avec succès';
 
            /* 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 = 'Erreur d\'envoi de l\'e-mail';
        }
 
    }
    /* Cas où le cookie est créé et que la page est rafraichie, on détruit la variable $_POST */
    else
    {
        unset($_POST);
    }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="fr">
<head>
    <title>Contactez moi</title>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
</head>
<body>
 
<?php
if (!empty($alert))
{
    echo '<p style="color:red">'.$alert.'</p>';
}
?>
 
<form action="index.php" method="post">
    <p>
        <label for="civilite">Civilite :</label>
        <select id="civilite" name="civilite">
            <option 
                value="mr"
                <?php 
                    if (!isset($_POST['civilite']) || $_POST['civilite'] == 'mr')
                    {
                        echo ' selected="selected"';
                    }
                ?>
            >
                Monsieur
            </option>
            <option 
                value="mme"
                <?php 
                    if (isset($_POST['civilite']) && $_POST['civilite'] == 'mme')
                    {
                        echo ' selected="selected"';
                    }
                ?>
            >
                Madame
            </option>
            <option 
                value="mlle"
                <?php 
                    if (isset($_POST['civilite']) && $_POST['civilite'] == 'mlle')
                    {
                        echo ' selected="selected"';
                    }
                ?>
            >
                Mademoiselle
            </option>
        </select>
    </p>
    <p>
        <label for="nom">Nom/Prenom :</label>
        <input type="text" id="nom" name="nom" 
        	value="<?php echo (isset($_POST['nom'])) ? $nom : '' ?>" 
        />
    </p>
    <p>
        <label for="email">E-mail :</label>
        <input type="text" id="email" name="email" 
        	value="<?php echo (isset($_POST['email'])) ? $expediteur : '' ?>"
        />
    </p>
    <p>
        <label for="sujet">Sujet :</label>
        <input type="text" id="sujet" name="sujet" 
        	value="<?php echo (isset($_POST['sujet'])) ? $sujet : '' ?>"
        />
    </p>
    <p>
        <label for="message">Message :</label>
        <textarea id="message" name="message" cols="40" rows="4">
			<?php echo (isset($_POST['message'])) ? $message : '' ?>
        </textarea>
    </p>
    <p>
        <input type="submit" name="envoye" value="Envoyer" />
    </p>
</form>
 
</body>
</html>
marj0jo 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 15h10.


 
 
 
 
Partenaires

Hébergement Web