Bonjour,
Je me suis lancé dans la mise en place d'un site dont l'accès est protégé par un mot de passe.
Les utilisateurs, et leur mot de passe, sont stockés dans une table "utilisateurs" de ma base de donnée.
Quand un utilisateur veut se connecter, il remplit les champs d'un formulaire qui compare avec les données stockée dans la table et le programme vérifie alors si les données sont correctes et donne ou non l'accès au site.
J'ai d'abord développer mon code avec easyPHP et comme tout fonctionnait parfaitement, j'ai décidé de tester sur le net en prenant un compte chez Lycos.
Après avoir importé mes données et mes pages, j'ai refait mon test et là, ca plante.
Quand un utilisateur inscrit dans la base de donnée entre ses coordonnées, et un mot de passe foireux, ça coince la première fois, mais à la deuxième tentative (avec un mot de passe erroné), il peut accéder au site.
Je n'ai pourtant rien changé à mon code (qui tourne parfaitement en local avec easyphp).
Si quelqu'un a une idée de ce qui coince.
Pour info, voici le code :
Le problème semble être le suivant, apparement, après la deuxième tentative, il attribue la valeur du mot de passe de l'utilisateur à ma variable $mot_de_passe. Et je ne comprend vraiment pas pourquoi.....
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 <?php @session_start(); // On démarre la session AVANT toute chose /* ********************************* * Initialisation des variables globales * ********************************* */ if (isset($_SESSION['nom']) == FALSE) // On vérifie si la variable globale n'existe pas { $_SESSION['nom'] = ""; } if (isset($_SESSION['prenom']) == FALSE) // On vérifie si la variable globale n'existe pas { $_SESSION['prenom'] = ""; } if (isset($_SESSION['mot_de_passe']) == FALSE) // On vérifie si la variable globale n'existe pas { $_SESSION['mot_de_pase'] = ""; } if (isset($_SESSION['num_fonction']) == FALSE) // On vérifie si la variable globale n'existe pas { $_SESSION['num_fonction'] = ""; } if (isset($_SESSION['num_metier']) == FALSE) // On vérifie si la variable globale n'existe pas { $_SESSION['num_metier'] = ""; } if (isset($_SESSION['num_metier_2']) == FALSE) // On vérifie si la variable globale n'existe pas { $_SESSION['num_metier_2'] = ""; } if (isset($_SESSION['num_metier_3']) == FALSE) // On vérifie si la variable globale n'existe pas { $_SESSION['num_metier_3'] = ""; } if (isset($_SESSION['email']) == FALSE) // On vérifie si la variable globale n'existe pas { $_SESSION['email'] = ""; } if (isset($_SESSION['administrateur']) == FALSE) // On vérifie si la variable globale n'existe pas { $_SESSION['administrateur'] = 0; } /* *********************************************** * Acquisition des variables globales vià le formulaire * *********************************************** */ if (isset($_POST['nom'])) // On vérifie si le visiteur a déjà choisi un nom { $_SESSION['nom'] = ($_POST['nom']); // Je stocke le nom du visiteur $_SESSION['nom'] = strtr($_SESSION['nom'], "éèêëçàâäôö", "eeeecaaaoo"); $_SESSION['nom'] = htmlentities ($_SESSION['nom']); $_SESSION['nom'] = strtoupper($_SESSION['nom']); //Je le mets en majuscule } if (isset($_POST['prenom'])) // On vérifie si le visiteur a déjà choisi un prenom { $_SESSION['prenom'] = htmlentities($_POST['prenom']); // Je stocke le prenom du visite $_SESSION['prenom'] = strtr($_SESSION['prenom'], "éèêëçàâäôö", "eeeecaaaoo"); $_SESSION['prenom'] = htmlentities ($_SESSION['prenom']); $_SESSION['prenom'] = strtoupper($_SESSION['prenom']);//Je le mets en majuscule } if (isset($_POST['mot_de_passe'])) // On vérifie si le visiteur a déjà choisi un mot de passe { $mot_de_passe = htmlentities($_POST['mot_de_passe']); // Je stocke le mot de passe entré par le visiteur $mot_de_passe = md5($mot_de_passe); // hachage du mot de passe } else // La variable n'existe pas encore { $mot_de_passe = 1; // On crée une variable $mot_de_passe } if (isset($_SESSION['drapeau']) == false) { $_SESSION['drapeau'] = 0; } /* *************************************************************** * Connexion à la base de donnée et récupération des données utilisateurs * *************************************************************** */ $db = mysql_connect('localhost', '******', '******'); mysql_select_db('*********',$db); $reponse = mysql_query("SELECT * FROM utilisateurs WHERE nom='".$_SESSION['nom']."' AND prenom='".$_SESSION['prenom']."' "); while ($data = mysql_fetch_array($reponse)) { $_SESSION['mot_de_passe'] = $data['mot_de_passe']; $_SESSION['num_fonction'] = $data['num_fonction']; $_SESSION['num_metier'] = $data['num_metier']; $_SESSION['num_metier_2'] = $data['num_metier_2']; $_SESSION['num_metier_3'] = $data['num_metier_3']; $_SESSION['administrateur'] = $data['administrateur']; } /* ************************************************* * Test du mot de passe et affichage de la page adéquate * ************************************************* */ if ($_SESSION['mot_de_passe'] != $mot_de_passe) // Si le mot de passe n'est pas bon { if ($_SESSION['drapeau'] >= 4) { mysql_close(); // Déconnexion de MySQL include ("deconnexion2.php"); } else { $_SESSION['drapeau'] = $_SESSION['drapeau']+1 ; mysql_close(); // Déconnexion de MySQL include ("formulaire_log_in.php"); } } //fin du if else //début du else { mysql_close(); // Déconnexion de MySQL include("acceuil.php"); }// Fin du code ?>
Partager