Précédent   Forum des professionnels en informatique > PHP > Scripts
Scripts Forum d'entraide sur les scripts PHP téléchargés. Les meilleurs scripts PHP, la FAQ scripts PHP, toutes les FAQ PHP
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 15/09/2006, 23h26   #1
Candidat au titre de Membre du Club
 
Guillaume DEVAUX
Inscription : août 2006
Messages : 66
Détails du profil
Informations personnelles :
Nom : Guillaume DEVAUX
Localisation : Suisse

Informations forums :
Inscription : août 2006
Messages : 66
Points : 10
Points : 10
Par défaut valider un formulaire par mail

bonjours

j'ai un formulaire d'inscription,

je rentre le pseudo
mots de passe
verif mot de passe
mail.
ce rentre dans la base compte procisoir

j'envoie un mail au client pour qu'il clique sur un lien pour validers sont inscription
donc ca valide l inscrition, et en meme temps transfere vers la table compte definiif et suprime la ligne ligne provisoir

ce qui ne marche pas c'est que losque l'on clique sur le lien que l on envoie par mal ca ne valide rien..
je donne mon code pour m'expliquer ce qui ne va pas dans la code
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
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
 
 
 
 
<?php
 
//--------------------------------------------
// FORMULAIRE D'INSCRIPTION 
//
// Envoi des données dans la table "comptes_provisoirs" si les conditions sont remplies
// -------------------------------------------
 
// variable initialisée à zero pour tester les conditions
$nb_faux = 0;
 
if (isset($_POST['pseudo']) && 
isset($_POST['password']) && 
isset($_POST['confirm_password']) && 
isset($_POST['mail']))
{
$pseudo = $_POST['pseudo'];
$password = $_POST['password'];
$confirm_password = $_POST['confirm_password'];
$mail = $_POST['mail'];
 
// incrémenter la variable $nb_faux si les champs du formulaire sont  vides 
if (empty($_POST['pseudo'])  || 
empty($_POST['password']) || 
empty($_POST['confirm_password']) || 
empty($_POST['mail']))
{         
?>
Champs non remplis<br/>
<?php 
$nb_faux++;
}     
 
// incrementer la variable $nb_faux si des caracteres ne sont pas autorisés pour le pseudo
if (!preg_match('`^(\w{4,15})$`', $pseudo))
{
?>
Caractères non autorisés pour le pseudo<br/>
<?php 
$nb_faux++;
}
 
// incrementer la variable $nb_faux si des caracteres ne sont pas autorisés pour le mot de passe et sa confirmation
if (!preg_match('`^(\w{4,15})$`', $password) or !preg_match('`^(\w{4,15})$`', $confirm_password ))	
{
?>
Caractères non autorisés pour le mot de passe<br/>
<?php 
$nb_faux++;
}
 
// incrementer la variable $nb_faux si le mot de passe et la confirmation du mot de passe ne sont pas les meme
if ($password != $confirm_password)
{
?>
Mauvais pass<br/>
<?php
$nb_faux++;
}
 
// incrementer la variable $nb_faux si le pseudo existe dans la base de donnée
if ($nb_faux >= 0)
{
include("pcdb.php");
$connexion = mysql_connect($hote, $utilisateur, $mdp) or die('<br/>Connexion au serveur impossible.<br/>
									Contactez le webmaster si le problème n\'est pas résolu.<br/>');
 
$choix_base = mysql_select_db($data_base, $connexion) or die('<br/>Sélection de la base de donnée echouée.<br/>
									Contactez le webmaster si le problème n\'est pas résolu.<br/>'); 
 
$requete = "SELECT pseudo FROM $table_cp WHERE pseudo='$pseudo'";
$resultat = mysql_query($requete) or die('<br/>Exécution de la requête impossible.<br/>
				Contactez le webmaster si le problème n\'est pas résolu.<br/>');
$ligne = mysql_fetch_array($resultat);
 
 
if ($pseudo == $ligne['pseudo'])
{
?>
Ce pseudo existe déja sur ce site<br/>
<?php 
$nb_faux++;
}
}
 
//  incrémenter la variable $nb_faux si la case à cocher "conditions"  est null         
if (isset($_POST['conditions']) == null)
{
?>
Conditions non coché<br/>
<?php 
$nb_faux++;	
}
 
// affectation de la chaine "oui" ou "non" dans une variable pour la newsletter
if (isset($_POST['newsletter']) != null)
{
$newsletter = "oui";
}
else
{
$newsletter = "non";
}
 
// connexion à la base de donnée si il n'y a pas d'erreur (champs oubliés, expressions régulirères, vérification de mot de passe, vérification du pseudo)
if ($nb_faux == 0) 
{   
include("pcdb.php"); 
 
// affecter un nombre aléatoire dans la variable clef qui servira  a la validation du compte par mail
$clef = "0123456789";
$clef = rand();
 
// requette envoi les données de l utilisateur dans la table comptes_provisoirs
$connexion = mysql_connect($hote, $utilisateur, $mdp) or die('<br/>Connexion au serveur impossible.<br/>
									Contactez le webmaster si le problème n\'est pas résolu.<br/>');
$choix_base = mysql_select_db($data_base, $connexion) or die('<br/>Sélection de la base de donnée echouée.<br/>
									Contactez le webmaster si le problème n\'est pas résolu.<br/>'); 
$requete = "INSERT INTO $table_cp VALUES
('', '$pseudo', '$password', '$mail', '$newsletter', '$clef')";
$resultat = mysql_query($requete) or die('<br/>Exécution de la requête impossible.<br/>
				Contactez le webmaster si le problème n\'est pas résolu.<br/>');
mysql_close($connexion); 
 
// Envoyer le mail si la requête à fonctionnée
if ($resultat == true)
{
?>
Vous allez reçevoir un mail pour la validation de votre compte<br/>
<?php
 
$mail_destinataire = $_POST['mail'];             
$sujet = "jeu, validation de l'inscription";
$message = "Cet email a été envoyé à partir de http://www.allomamannounou.com
Ton mot de passe est: $password \n Ton pseudo est: $pseudo 
Pour valider ton inscription clique sur le lien suivant. 
Nous te demandons ca  pour s'assurer que l'adresse mail que tu as entrée était correcte.
Ceci pour prévenir du spam et des abus. 
http://allomamannounou.free.fr/service/creacv/inscription.php?&amp;pseudo=$pseudo&amp;clef=$clef
Le Webmaster";
$head = "Bonjour $pseudo ";
mail($mail_destinataire, $sujet, $message, $head);
}
} 
}
 
//--------------------------------------------------------------------
// VALIDATION DU COMPTE APRES INSCRIPTION
//
// Verification du lien de validation via mail :
// 1 - connexion  si la clef et le pseudo existe dans la table "comptes_provisoirs"
// 2 - transfert des données dans la table "comptes_definitifs"
// 3 - suppression des données dans la table "comptes_provisoirs"
//--------------------------------------------------------------------
 
if (isset($_GET['pseudo']) && isset($_GET['clef']))
{
$pseudo = $_GET['pseudo'];
$clef = $_GET['clef'];
 
include("pcdb.php"); 
 
// requette chercher les données lorsque le champs pseudo et le champs clef existent dans la table "comptes_provisoirs"
$connexion = mysql_connect($hote, $utilisateur, $mdp) or die('<br/>Connexion au serveur impossible.<br/>
								Contactez le webmaster si le problème n\'est pas résolu.<br/>'); 
$choix_base = mysql_select_db($data_base, $connexion) or die('<br/>Sélection de la base de donnée echouée.<br/>
								Contactez le webmaster si le problème n\'est pas résolu.<br/>'); 	                                                          
$requete = "SELECT pseudo, password, mail, newsletter, FROM $table_cp WHERE pseudo = '$pseudo' AND clef = '$clef'";
$resultat = mysql_query($requete) or die('<br/>Exécution de la requête impossible.<br/>
			Contactez le webmaster si le problème n\'est pas résolu.<br/>');
 
// affecter les infos utilisateurs si la clef et le pseudo existent dans la table "comptes_provisoirs"
if($donnees = mysql_fetch_array($resultat))
{
$pseudo = $donnees['pseudo'];
$password = $donnees['password'];
$mail = $donnees['mail'];
$newsletter = $donnees['newsletter'];
 
// requette transferer les données de la table "comptes_provisoirs" à la table "comptes_definitifs"
$requete = "INSERT INTO $table_cd VALUES('',  '$pseudo', '$password', '$mail', '$newsletter')";
$resultat = mysql_query($requete) or die('<br/> Exécution de la requête impossible.<br/>
				Contactez le webmaster si le problème n\'est pas résolu.<br/>');
 
// requette suppression des données provisoir de la table "comptes_definitifs"
$requete = "DELETE FROM $table_cp WHERE clef = '$clef' AND pseudo = '$pseudo'";
$resultat = mysql_query($requete) or die('<br/>Exécution de la requête impossible.<br/>
				Contactez le webmaster si le problème n\'est pas résolu.<br/>'); 
mysql_close($connexion); 
?>
Votre compte est validé<br/>
<?php
}
else
{
?>
Votre compte est deja validé ou le lien de validation est incorrect<br/>
<?php
}
}
 
?>
 
<form action="inscription.php" method="post">
<fieldset>
<legend>Infos obligatoires</legend>
<table>
<tr>
<td>Pseudo :</td>
<td><input type="text" name="pseudo" size="20" /></td>
</tr>
<tr>
<td>Mot de passe :</td>
<td><input type="password" name="password" size="20" /></td>
</tr>
<tr>
<td>Confirmer le mot de passe :</td>
<td><input type="password" name="confirm_password" size="20"/></td>
</tr>
<tr>
<td>Mail :</td>
<td><input type="text" name="mail" size="30" /></td>
</tr>
<tr>
<td colspan="2">
<textarea name="CGV" cols="57" rows="8" id="CGV">
Conditions d'utilisation du service
Par l'intermédiaire du site web, l'utilisateur peut déposer des annonces de gardes d’enfants. 
Il appartient à l'utilisateur, qu'il soit une personne à la recherche de solution de garde d’enfants ou personne proposant des services de gardes, de déterminer, les modalités de la garde des enfants, ainsi que celles des rémunérations dues et de procéder aux vérifications nécessaires concernant l'identité et la qualité de ses interlocuteurs. 
L’utilisateur qui dépose un message  sur le service doit être conscient du caractère public des informations qu'il délivre et notamment que la divulgation d'informations telles que le numéro de téléphone, l’adresse personnelle peuvent engendrer des malversations à son insu. 
L'utilisateur s'engage à fournir des informations exactes et complètes ; il s'engage notamment à ne pas créer une fausse identité de nature à induire les tiers en erreur. 
allomamannonou se réserve le droit de supprimer à tout moment tout message que nous estimons contraire à la réglementation en vigueur, à l'objet du service. 
allomamannonou ne donne aucune garantie d'aucune sorte en ce qui concerne la teneur des messages, notamment l'exactitude ou la fiabilité des informations qui y figurent, et la qualité des personnes, produits, services ou informations, quels qu'ils soient, présentés, obtenus ou contacté par le biais d'un message. 
Notre société décline toute responsabilité concernant les message déposés sur le service. L'utilisation du service se fait sous la seule responsabilité de ses utilisateurs qui assument la totalité des risques pouvant en découler. 
Il appartient à l'utilisateur de procéder aux vérifications nécessaires concernant l'identité et la qualité de ses interlocuteurs.</textarea>	  </td>
</tr>
</table>
<input type="checkbox" name="conditions"/>
J'ai lu et j'accepte les conditions générales d'utilisation d'allomamannounou .<br/>
<input type="checkbox" name="newsletter" checked="checked"/>
Je souhaite recevoir la newletter dans ma boite mail . <br/>
</fieldset>
<input type="submit" value="Valider"/>
</form>
guillaume2vo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2006, 23h36   #2
Membre émérite

 
Avatar de FCYPBA
 
Inscription : novembre 2004
Messages : 735
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 735
Points : 924
Points : 924
Bonsoir,

Les données sont bien dans la table provisoire d'après ce que tu dis.

Lors de l'appel à la page avec le bon lien, rien ne se passe, ou bien tu as un de tes messages.

Edit : Les données sont-elles effacées de la table temporaire

Je n'ai pas parcouru tout ton code car celui-ci est un peu indigeste avec tous ces if avec du html dedans, pense à séparer un peu le code de l'affichage, car là
FCYPBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2006, 23h45   #3
Candidat au titre de Membre du Club
 
Guillaume DEVAUX
Inscription : août 2006
Messages : 66
Détails du profil
Informations personnelles :
Nom : Guillaume DEVAUX
Localisation : Suisse

Informations forums :
Inscription : août 2006
Messages : 66
Points : 10
Points : 10
Par défaut valid inscription

oui, ca va en premier dans la table provisoir, et quand on clique sur le mail ca va dans la table definitif

et je n'ai aucun message d'erreur

http://allomamannounou.free.fr/servi...lef=1954425719

pour le mmt c toujours en phase test car je suis encore un grand debutant en programation donc il est vrai que je vais séparé le code HTML et PHP par la suite
guillaume2vo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2006, 23h50   #4
Membre émérite

 
Avatar de FCYPBA
 
Inscription : novembre 2004
Messages : 735
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 735
Points : 924
Points : 924
Il faudrait que tu rajoutes qqs traces dans le programme pour voir ce que celui-ci fait

Par exemple,

Code :
1
2
3
 
if (isset($_GET['pseudo']) && isset($_GET['clef'])) {
echo 'Début de la validation';
et afficher toutes les requetes avec
Cela te permettra de savoir ou ca bloque et surtout le cheminement dans le progamme. C'est du debogage à l'ancienne, mais pour le web ca va plus vite
FCYPBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2006, 00h12   #5
Candidat au titre de Membre du Club
 
Guillaume DEVAUX
Inscription : août 2006
Messages : 66
Détails du profil
Informations personnelles :
Nom : Guillaume DEVAUX
Localisation : Suisse

Informations forums :
Inscription : août 2006
Messages : 66
Points : 10
Points : 10
je vient de voir que la cef de la table est diferente que celle que j envoie par mail

es-normal
avec la fonction RAND()
guillaume2vo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2006, 00h18   #6
Membre émérite

 
Avatar de FCYPBA
 
Inscription : novembre 2004
Messages : 735
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 735
Points : 924
Points : 924
Dans ton code tu utilise correctement la fonction et tu attribue la valeur à une variable que tu insère en base et dans le mail. La clé doit être la meme, et cela ne doit pas etre autrement ( au vu de ton code )

Aucun problème à ce niveau là en tout cas.
FCYPBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2006, 09h03   #7
Membre éprouvé
 
Homme
Inscription : mai 2006
Messages : 694
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : Belgique

Informations forums :
Inscription : mai 2006
Messages : 694
Points : 417
Points : 417
Sur mon site j'ai fait le système de vérification complètement différent et plus simple avec une seule table donc pas de données temporaires à copier puis effacer... tout ça c'est lourd et difficile à gérer.

Tu devrais donc créer une seule table pour tes membres, y inscrire bien sûr les données du formulaire et ajouter un champ "clé" (char) et un champ "activé" (tinyint(1)).

Par défaut tu passes la "clé" et activé à 0 dans les champs appropriés.

Ensuite, lors de la vérification, si la clé et le nom de membre coïncident tu passes activé à 1 et le compte est vérifié.

Ensuite tu autorises l'authentification des membres dont le champ activé est à 1.

Qu'en penses-tu?

webrider
__________________
Pensez au tag
webrider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2006, 09h07   #8
Membre émérite

 
Avatar de FCYPBA
 
Inscription : novembre 2004
Messages : 735
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 735
Points : 924
Points : 924
Les deux systèmes se valent. L'avantage de la table temporaire c'est que lors de l'identification d'un membre, le suivi des membres, etc .., la table est moins volumineuse car ell ne contient que les vrais membres.

De toute facon, je ne pense pas que son problème viennent de l'utilisation de plusieurs tables mais plutôt du déroulement de son script

On va attendre qu'il nous parle des t-races qu'il a mis en place

Pierre
FCYPBA 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 08h21.


 
 
 
 
Partenaires

Hébergement Web