Bonjour
Voilà j'expose mon problème :
J'ai suivit un tuto pour créer une newsletter pour mon site mais j'ai un soucis avec l'inscription des membres et avec l'envoi des messages (au niveau de la mise en forme html) !
J'ai deux tables pour le fonctionnement du script :
1 - un simple table NEWSLETTER avec un champ EMAIL
email text utf8_general_ci Non
2 - Une table NEWSLETTER_ARTICLE avec 3 champ :
newsletter_article_id int(9) UNSIGNED Non auto_increment
newsletter_article_texte text utf8_general_ci Non
newsletter_article_titre
Ensuite ma newsletter se compose de 4 fichiers PHP :
Newsletter.php : (voiçi son code)
Newsletter_inscription.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <?php /*************************************************************************** * Copyright (C) 2007 Michel Teddy * This file is part of Tagadash * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation; either version 2.1 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ***************************************************************************/ /*************************************************************************** * Fichier : /pages/Newsletter.php * Date de création : 17/09/2007 * Dernière modification : 15/10/2007 ***************************************************************************/ // Sécurité if ( !defined ( 'TAGADASH' ) ) { header ( 'Location: ../' ); die ( -1 ); } // Titre de la page $page_titre = 'Newsletter'; $page_infos = 'Inscription ou Désinscription à la Newsletter'; if(isset($_GET['email'])) //on vérifie que la variable $_GET['email'] existe { if( !empty($_POST['email']) AND $_GET['email']==1 AND isset($_POST['new'])) /*on vérifie que la variable $_POST['email'] contient bien quelque chose, que la variable $_GET['email'] est égale à 1 et que la variable $_POST['new'] existe */ { if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['email'])) // on vérifie qu'on a bien rentré une adresse e-mail valide { // -- On vérifie si le Mail existe déjà dans la table.############################################### $sql = 'SELECT COUNT(*) FROM ' . $database->pref . 'newsletter WHERE email = "'. $_POST['email'].'";'; $req = $database->Requete ( $sql ) or $database->Erreur ( __LINE__ , __FILE__ , $sql ); //################################################################################################### if( $_POST['new'] == 0 && $req[0] != 0 ) //si la variable $_POST['new'] est égale à 0, cela signifie que l'on veut s'inscrire { //on définit les paramètres de l'e-mail $email = $_POST['email']; $message = 'Pour valider votre inscription à la newsletter, <a href="http://www.informadream.fr/cms_demo/index.php?page=Newsletter_inscription&tru=1&email='.$email.'">cliquez ici</a>.'; $destinataire = $email; $objet = "Inscription à la newsletter" ; $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n"; $headers .= "From: informadream.11@gmail.com" . "\r\n"; if ( mail($destinataire, $objet, $message, $headers) ) //on envoie l'e-mail { $page_texte .="<p style=\"text-align:center; font-weight:bold; color:#F00;\">Pour valider votre inscription, veuillez cliquer sur le lien dans l´e-mail que nous venons de vous envoyer.</p>"; } else { $page_texte .="<p style=\"text-align:center; font-weight:bold; color:#F00;\">Il y a eu une erreur lors de l´envoi du mail pour votre inscription.</p>"; } } elseif( $_POST['new'] == 1 && $req[0] != 0 ) //si la variable $_POST['new'] est égale à 1, cela signifie que l'on veut se désinscrire { //on définit les paramètres de l'e-mail $email = $_POST['email']; $message = 'Pour valider votre désinscription de la newsletter, <a href="http://www.informadream.fr/cms_demo/index.php?page=Newsletter_desinscription&tru=1&email='.$email.'">cliquez ici</a>.'; $destinataire = $email; $objet = "Désinscription de la newsletter" ; $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n"; $headers .= "From: informadream.11@gmail.com" . "\r\n"; if ( mail($destinataire, $objet, $message, $headers) ) { $page_texte .="<p style=\"text-align:center; font-weight:bold; color:#F00;\">Pour valider votre désinscription, veuillez cliquer sur le lien dans l´e-mail que nous venons de vous envoyer.</p>"; } else { $page_texte .="<p style=\"text-align:center; font-weight:bold; color:#F00;\">Il y a eu une erreur lors de l´envoi du mail pour votre désinscription.</p>"; } } else { $page_texte .="<p style=\"text-align:center; font-weight:bold; color:#F00;\">Il existe déjà un membre avec cette adresse email.<br /><a href=\"index.php?page=Newsletter\">RETOUR</a></p>"; } } else { $page_texte .="<p style=\"text-align:center; font-weight:bold; color:#F00;\">Vous n´avez pas entré une adresse e-mail valide !<br /><a href=\"index.php?page=Newsletter\">RETOUR</a></p></p>"; } } else { $page_texte .="<p style=\"text-align:center; font-weight:bold; color:#F00;\">Il y a eu une erreur !<br /><a href=\"index.php?page=Newsletter\">RETOUR</a></p></p>"; } } else // si les champs n'ont pas été remplis { $page_texte .= "<form method=\"post\" action=\"index.php?page=Newsletter&email=1\">"; $page_texte .= "<fieldset>\n<legend>Ici vous pouvez vous inscrire ou vous désinscrire de la newsletter du site VOTRE SITE.</legend>\n\n <p align=\"center\"><u>Entrez votre adresse e-mail ci-dessous :</u><br /> <input type=\"text\" name=\"email\" size=\"25\" /><br /> <u>Faite votre choix en cochant <b><i>Inscription</i></b> ou <b><i>Désincription</i></b> ci-dessous :</u><br /> S´inscrire à la Newsletter <input type=\"radio\" name=\"new\" value=\"0\" /><br /> Se désinscrire de la Newsletter <input type=\"radio\" name=\"new\" value=\"1\" /><br /><br /> <input type=\"submit\" value=\"Envoyer\" name=\"submit\" /> <input type=\"reset\" name=\"reset\" value=\"Effacer\" /></p> </form>"; } ?>
Newsletter_desinscription.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <?php /*************************************************************************** * Copyright (C) 2007 Michel Teddy * This file is part of Tagadash * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation; either version 2.1 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ***************************************************************************/ /*************************************************************************** * Fichier : /pages/Livre_or.php * Date de création : 17/09/2007 * Dernière modification : 15/10/2007 ***************************************************************************/ // Sécurité if ( !defined ( 'TAGADASH' ) ) { header ( 'Location: ../' ); die ( -1 ); } // Titre de la page $page_titre = ''; $page_infos = ''; if($_GET['tru']==1) { setcookie("email", $_GET['email'], time()+60); //on crée un cookie qui expirera 60 secondes plus tard pour des raisons de sécurité } if($_GET['tru']==2) { $delai=1; $url='http://www.informadream.fr/cms_demo/index.php'; header("Refresh: $delai;url=$url"); } else { $delai=60; $url='http://www.informadream.fr/cms_demo/index.php'; header("Refresh: $delai;url=$url"); } $page_texte .='<p align="center"><font size="5">Validation de votre inscription</font></p>'; if($_GET['tru']==1) //si la variable $_GET['tru'] est égale à 1 //on affiche le formulaire { $page_texte .='<font color="red">Attention, vous avez 1 minute pour remplir le formulaire. Passé ce délai, celui*ci ne sera plus valide.</font> <form method="post" action="http://www.informadream.fr/cms_demo/index.php?page=Newsletter_inscription&tru=2"> Entrez votre e-mail : <input type="text" name="email" size="25" /><br /> <input type="submit" value="Envoyer" name="submit" /> <input type="reset" name="reset" value="Effacer" /> </form>'; } elseif($_GET['tru']==2) //sinon, si la variable $_GET['tru'] est égale à 2 { $email_mail = $database->Protege ($_COOKIE['email']); $email_entre = $database->Protege ($_POST['email']); if( $email_entre == $email_mail ) //si les deux adresses e-mail sont identiques { $sql = "INSERT INTO " . $database->pref . "newsletter VALUES ('" . $email_entre . "');"; $req = $database->Requete ( $sql ) or $database->Erreur ( __LINE__ , __FILE__ , $sql ); $page_texte .="<p style=\"text-align:center; font-weight:bold; color:#F00;\">Vous avez bien été inscrit à la newsletter ! Vous allez être redirigé dans 1 seconde.</p>"; } else { $page_texte .="<p style=\"text-align:center; font-weight:bold; color:#F00;\">Vous n´avez pas entré la bonne adresse e-mail !</p>"; } } else { $page_texte .="<p style=\"text-align:center; font-weight:bold; color:#F00;\">Il y a eu une erreur.</p>"; } ?>
Newsletter_admin.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <?php /*************************************************************************** * Copyright (C) 2007 Michel Teddy * This file is part of Tagadash * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation; either version 2.1 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ***************************************************************************/ /*************************************************************************** * Fichier : /pages/Livre_or.php * Date de création : 17/09/2007 * Dernière modification : 15/10/2007 ***************************************************************************/ // Sécurité if ( !defined ( 'TAGADASH' ) ) { header ( 'Location: ../' ); die ( -1 ); } // Titre de la page $page_titre = ''; $page_infos = ''; if($_GET['tru']==1) { setcookie("email", $_GET['email'], time()+60); //on crée un cookie qui expirera 60 secondes plus tard pour des raisons de sécurité } if($_GET['tru']==2) { $delai=1; $url='http://www.informadream.fr/cms_demo/index.php'; header("Refresh: $delai;url=$url"); } else { $delai=60; $url='http://www.informadream.fr/cms_demo/index.php'; header("Refresh: $delai;url=$url"); } //} $page_texte .='<p align="center"><font size="5">Validation de votre désinscription</font></p>'; if($_GET['tru']==1) //si la variable $_GET['tru'] est égale à 1 //on affiche le formulaire { $page_texte .='<font color="red">Attention, vous avez 1 minute pour remplir le formulaire. Passé ce délai, celui*ci ne sera plus valide.</font> <form method="post" action="http://www.informadream.fr/cms_demo/index.php?page=Newsletter_desinscription&tru=2"> Entrez votre adresse e-mail : <input type="text" name="email" size="25" /><br /> <input type="submit" value="Envoyer" name="submit" /> <input type="reset" name="reset" value="Effacer" /> </form>'; } elseif($_GET['tru']==2) //sinon, si la variable $_GET['tru'] est égale à 2 { $email_mail = $database->Protege ($_COOKIE['email']); $email_entre = $database->Protege ($_POST['email']); if( $email_entre == $email_mail ) //si les deux adresses e-mail sont identiques { //mysql_query("DELETE FROM newsletter WHERE email='" . $email_entre ."'"); //on supprime l'adresse de la BDD $sql = "DELETE FROM " . $database->pref . "newsletter WHERE email = '" . $email_entre . "';"; $database->Requete ( $sql ) or $database->Erreur ( __LINE__ , __FILE__ , $sql ); $page_texte .="<p style=\"text-align:center; font-weight:bold; color:#F00;\">Vous avez bien été désinscrit de la newsletter ! Vous allez être redirigé dans 1 seconde.</p>"; } else { $page_texte .="<p style=\"text-align:center; font-weight:bold; color:#F00;\">Vous n´avez pas entré la bonne adresse e-mail !</p>"; } } else { $page_texte .="<p style=\"text-align:center; font-weight:bold; color:#F00;\">Il y a eu une erreur.</p>"; } ?>
Le soucis à l'inscription c'est que je ne peux rentré qu'un email tout les autres sont signalé comme existant !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <?php /*************************************************************************** * Copyright (C) 2007 Michel Teddy * This file is part of Tagadash * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation; either version 2.1 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ***************************************************************************/ /*************************************************************************** * Fichier : /pages/Newsletter_admin.php * Date de création : avant le 13/08/2007 * Dernière modification : 29/08/2007 ***************************************************************************/ // Sécurité if ( !defined ( 'TAGADASH' ) ) { header ( 'Location: ../' ); die ( -1 ); } // Droits d'administration if ( $droit['administration'] == 0 ) { $page_msg = 2; include_once ( './systeme/msg.' . EXT ); } // Titre de la page $page_titre = 'newsletter'; $page_infos = 'Rédaction et envoi de la newsletter'; // on liste les inscrits $page_texte .= '<div align="center"><br /><br /><u>Liste des inscrits :</u><br /> '; $sql = 'SELECT COUNT(*) AS count FROM ' . $database->pref . 'newsletter;'; $req = $database->Requete ( $sql ) or $database->Erreur ( __LINE__ , __FILE__ , $sql ); $nbr_email = $database->Result ( $req , 'count' ); $page_texte .= 'Il y a <span style="font-weight:bold; color:#F00; font-style:italic;">' . $nbr_email . '</span> inscrits à la Newsletter</div>'; //-------------- liste la newsletter afin de pouvoir la supprimé et dans faire une autre ----------------------------------------// $sql = 'SELECT COUNT(*) AS count FROM ' . $database->pref . 'newsletter_article;'; $req = $database->Requete ( $sql ) or $database->Erreur ( __LINE__ , __FILE__ , $sql ); $nbr_msg = $database->Result ( $req , 'count' ); if ( isset ( $_GET['msg'] ) && is_numeric ( $_GET['msg'] ) && $nbr_msg > 0 && $_GET['msg'] > 0 ) { $page = 0; $sql = 'SELECT newsletter_article_id FROM ' . $database->pref . "newsletter_article WHERE newsletter_article_id <= '" . $_GET['msg'] . "';"; $req = $database->Requete ( $sql ) or $database->Erreur ( __LINE__ , __FILE__ , $sql ); header ( 'Location: index.' . EXT . '?page=Newsletter_admin&start=' . $page ); die ( -1 ); } // Suppression définitive else if ( isset ( $_GET['delete'] ) ) { $page = 0; $sql = 'DELETE FROM ' . $database->pref . "newsletter_article WHERE newsletter_article_id = '" . $_GET['id'] . "';"; $database->Requete ( $sql ) or $database->Erreur ( __LINE__ , __FILE__ , $sql ); $page_texte .='<p style="text-align:center; font-weight:bold; color:#F00;">Newsletter supprimé avec succès !</p>'; } if ( $nbr_msg > 0 ) { $sql = "SELECT newsletter_article_id, newsletter_article_titre, newsletter_article_texte FROM " . $database->pref . 'newsletter_article'; //=>MySQL $row = $database->ResultArray ( $req ); //=>END $req = $database->Requete ( $sql ) or $database->Erreur ( __LINE__ , __FILE__ , $sql ); $page_texte .='<br /><br /><div style="text-align:center; font-weight:bold; color:#F00;">Ci-dessous voiçi la dernière newsletter envoyé.<br /><br />Attention supprimez-la avant d´en écrire une nouvelle.<br /><br /></div>'; while ( $row = $database->ResultArray ( $req ) ) { $page_texte .= "<div align=\"center\" id=\"msg_" . $row['newsletter_article_id'] . "\">\n\n"; if ( $row['newsletter_article_id'] > 0 ) { $page_texte .= '<a href="index.' . EXT . '?page=Newsletter_admin&id=' . $row['newsletter_article_id'] . '&delete">Cliquez ici pour supprimer la dernière Newsletter envoyé.</a>'; } $msg_texte_titre = 'Titre : ' .$row['newsletter_article_titre'].''; $msg_texte .= 'Texte : ' .$row['newsletter_article_texte'].''; $page_texte .= "<br />" . $site->Parser ( $msg_texte_titre ) . "<br />"; $page_texte .= "" . $site->Parser ( $msg_texte ) . "</div>\n\n"; } } //-------------- liste la newsletter afin de pouvoir la supprimé et dans faire une autre ----------------------------------------// // Traitement des données du formulaire if ( isset ( $_POST['submit'] ) ) { $form_champ_titre = $_POST['titre']; $form_champ_texte = $_POST['texte']; if ( empty ( $_POST['titre'] ) || empty ( $_POST['texte'] ) ) { $page_texte .= '<p><strong>' . $langue['erreur'] . '</strong> : ' . $langue['err_oblig'] . "</p>\n\n"; } else { $sql = "INSERT INTO `" . $database->pref . "newsletter_article` (`newsletter_article_titre`, `newsletter_article_texte`) VALUES ('" . $database->Protege ( $_POST['titre'] ) . "', '" . $database->Protege ( $_POST['texte'] ) . "');"; $req = $database->Requete ( $sql ) or $database->Erreur ( __LINE__ , __FILE__ , $sql ); $article_id = $database->LastInsertId ( $req ); //------------------------------------------------- // On récupère la newsletter $sql = "SELECT newsletter_article_titre,newsletter_article_texte FROM `" . $database->pref . "newsletter_article"; $req = $database->Requete ( $sql ) or $database->Erreur ( __LINE__ , __FILE__ , $sql ); $fichier_message = 'Newsletter du site CMS_DEMO'; //on définit le message while( $row = $database->ResultArray ( $req ) ) { $fichier_message .= "/r/n"."Titre :".$row["newsletter_article_titre"]."./r/n"; $fichier_message .= "Message :".$row["newsletter_article_texte"]."."; } //on récupère de la table newsletter les personnes inscrites $sql = "SELECT email FROM `" . $database->pref . "newsletter"; $req = $database->Requete ( $sql ) or $database->Erreur ( __LINE__ , __FILE__ , $sql ); //on définit la liste des inscrits $liste = "informadream.11@gmail.com"; while ( $row = $database->ResultArray ( $req ) ) { $liste .= ","; //on sépare les adresses par une virgule $liste .= $row['email']; } $destinataire = $liste; $date = date("d/m/Y"); $objet = "Newsletter du $date"; //on définit l'objet qui contient la date //on définit le reste des paramètres $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n"; $headers .= 'From: informadream.11@gmail.com' . '\r\n'; //on définit l'expéditeur $headers .= "Bcc:" . $liste . "" . "\r\n"; //on définit les destinataires en copie cachée pour qu'ils ne puissent pas voir les adresses des autres inscrits //on envoie l'e-mail if ( mail($destinataire, $objet, $fichier_message, $headers) ) { $page_texte .= '<p style="text-align:center; font-weight:bold; color:#F00;">Envoi de la newsletter réussi.</p>'; } else { $page_texte .= '<p style="text-align:center; font-weight:bold; color:#F00;">Echec de lors de l´envoi de la newsletter.</p>'; } //------------------------------------------------- } } // Formulaire $form_adresse = 'index.' . EXT . '?page=Newsletter_admin'; $form_titre = 'Envoyer la Newsletter'; include ( 'systeme/form_newsletter.' . EXT ); ?>
Ensuite pour l'envoi la mise en forme n'est pas bonne elle est de cette formecopier coller du mail reçu)
Merci de bien vouloir me donner un coup de main parce-que là je patine !Newsletter du 01/09/2009
De : "informadream.11@gmail.comrnBcc:informadream.11"@gmail.com
Ce message est peut-être dangereux. En savoir plus
Envoyé : mar. 01/09/09 10:02
À : informadream.11@gmail.com; nathan-11@live.fr
Newsletter du site CMS_DEMO/r/nTitre :TEST NEWSLETTER./r/nMessage :TEST NEWSLETTER
Cordialement
Partager