Bonjour,

J'ai un petit soucis avec ma confirmation mail de formulaire d'inscription.

Le formulaire envoie bien les champ demandés dans la base de donnée et le lien crée semble correct.

Seulement, quand je clique sur le lien de confirmation par mail, j'ai toujours un message disant que mon compte n'a pas pu être activé.

Apparemment, le champ actif, qui est à 0 par défaut, et qui est censé passé à 1 ne se fait pas.

Je ne trouve vraiment pas


Le formulaire d'inscription:

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
 
 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
 
<title>Espace membre</title>
 
</head>
 
<body>
 
<font face="Verdana" size="2">
<center>
 
<?php
 
require("conf.php3");
 
switch($action) {
/*-----------------------------------------------------------------*/
/*	AJOUT DANS MySQL			*/
/*-----------------------------------------------------------------*/
 
case "add";
 
// CONNEXION A LA BASE DE DONNEE
$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);
if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier conf.php3"; exit;}
 
 
// Récupération des variables nécessaires au mail de confirmation	
$email = $_POST['mail'];
$login = $_POST['pseudo_membre'];
 
// Génération aléatoire d'une clé
$cle = md5(microtime(TRUE)*100000);
 
// TEST SUR LES VALEURS SAISIES
if($pseudo_membre==""){echo "Vous devez choisir un pseudo<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
if($passe_membre==""){echo "Vous devez choisir un mot de passe<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
// CHAMPS SUPLEMENTAIRES, inspirez-vous des lignes suivantes. Pour qu'un champs soit facultatif, omettez la ligne.
//if($email==""){echo "Vous n'avez pas saisi votre email<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
//if($ville==""){echo "Vous n'avez pas saisi la ville<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
 
// ON VERIFIE SI CE PSEUDO EXISTE DEJA
$requete=mysql_db_query($sql_bdd,"select * from membre where pseudo=\"$pseudo_membre\"",$db_link) or die(mysql_error());
$num=mysql_num_rows($requete);
if($num!=0)
	{
	echo "Ce pseudo existe déjà, veuillez en choisir un autre<br><br><a href=\"javascript:window.history.back()\">Retour</a>";
	}
else
	{
	// CREATION D'UN IDENTIFIANT ALEATOIRE
	$taille = 20;
	$lettres = "abcdefghijklmnopqrstuvwxyz0123456789";
	srand(time());
	for ($i=0;$i<$taille;$i++)
		{
		$id.=substr($lettres,(rand()%(strlen($lettres))),1);
		}
 
	// ON RECHERCHE L'ID MAXIMUM DE LA TABLE
	$requete=mysql_db_query($sql_bdd,"select max(id_membre) from membre",$db_link) or die(mysql_error());
	$idmax=mysql_result($requete,0,"max(id_membre)");
 
	// INSERTION DANS LA TABLE 
	$idnew=$idmax+1;
	$requete=mysql_db_query($sql_bdd,"insert into membre values ($idnew,\"$id\",\"$pseudo_membre\",\"$passe_membre\",\"$mail\",\"$cle\",\"\")",$db_link) or die(mysql_error());
	// CHAMPS SUPLEMENTAIRES, complétez la requête précédente en ajoutant les variables et en respectant l'ordre des colonnes de la table. Exemple :
	// insert into membre values ($idnew,\"$id\",\"$pseudo_membre\",\"$passe_membre\",\"$email\",\"$ville\")
 
 
// Préparation du mail contenant le lien d'activation
$destinataire = $email;
$sujet = "Activer votre compte" ;
$entete = "From: inscription@site.com" ;
 
// Le lien d'activation est composé du login(log) et de la clé(cle)
$message = 'Bienvenue sur VotreSite,

Pour activer votre compte, veuillez cliquer sur le lien ci dessous
ou copier/coller dans votre navigateur internet.

http://site.com/validation.php?log='.urlencode($login).'&cle='.urlencode($cle).'


---------------
Ceci est un mail automatique, Merci de ne pas y répondre.';
 
 
mail($destinataire, $sujet, $message, $entete) ; // Envoi du mail
 
 
	}
 
// DECONNEXION MYSQL
mysql_close($db_link);
 
break;
 
 
/*-----------------------------------------------------------------*/
/*	AFFICHAGE DU FORMULAIRE			*/
/*-----------------------------------------------------------------*/
 
default;
echo "	<h2>Nouveau membre</h2>
	<form action=\"adduser.php3\" method=\"post\">
	<input type=\"hidden\" name=\"action\" value=\"add\">
	Chosissez un pseudo<br><input type=\"text\" name=\"pseudo_membre\"><br>
	Chosissez un mot de passe<br><input type=\"password\" name=\"passe_membre\"><br>
	<! -- CHAMPS SUPLEMENTAIRES, décommentez les 2 lignes suivantes -->
	Votre email<br><input type=\"text\" name=\"mail\"><br>
	<br>
	<!-- Ville<br><input type=\"text\" name=\"ville\"><br> -->
	<input type=\"submit\" value=\"Envoyer\">
	</form>
	<font face=\"Verdana\" size=\"2\"><a href=\"index.htm\">Se connecter</a></font>";
break;
}
 
 
?>
 
</center>
 
</font>
 
</body>
 
</html>

Et le fichier de validation ( celui qui pose problème )

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
 
 
<?php require("conf.php3");?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
<title>Document sans titre</title>
 
</head>
 
<body>
 
<?php
 
// CONNEXION A LA BASE DE DONNEE
$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);
if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier conf.php3"; exit;}
 
// Récupération des variables nécessaires à l'activation
$login = $_GET['log'];
$cle = $_GET['cle'];
 
// Récupération de la clé correspondant au $login dans la base de données
$sql = "SELECT cle,actif FROM membre WHERE pseudo like '$login'";
$result = mysql_query($sql);
 
 
if($sql)
{
      $clebdd = $row['cle']; // Récupération de la clé 
      $actif = $row['actif'];  // $actif contiendra alors 0 ou 1 
}
  {
    $clebdd = $row['cle'];   // Récupération de la clé
    $actif = $row['actif']; // $actif contiendra alors 0 ou 1
  }
 
 
// On teste la valeur de la variable $actif récupéré dans la BDD
if($actif == '1') // Si le compte est déjà actif on prévient
  {
     echo "Votre compte est déjà actif !";
  }
else // Si ce n'est pas le cas on passe aux comparaisons
  {
     if($cle == $clebdd) // On compare nos deux clés   
       {
          // Si elles correspondent on active le compte !   
          echo "Votre compte a bien été activé !";
 
          // La requête qui va passer notre champ actif de 0 à 1
          mysql_query("UPDATE membre SET actif='$actif' WHERE pseudo like '$login'");
       }
     else // Si les deux clés sont différentes on provoque une erreur...
       {
          echo "Erreur ! Votre compte ne peut être activé...";
       }
  }
 
?>
 
 
</body>
 
 
</html>
 
 
</body>
 
 
</html>

En vous remerciant