salut tout le monde, svp j'ai besoin d'aide:
j'ai crée sur mon site web un espace membres: les utilisateurs doivent s'inscrire tout d'abord, puis se connecter pour pouvoir consulter ma base & y modifier les données...
le probleme est que, j'ai testé & j'ai trouvé qu'on peut se connecter sans donner le bon login & mot de pase! pire on se connecte sans meme introduire rien (ni non utilisateur ni mot de passe)...
je vous donne les codes des mes pages pour m'aider à y trouver l'erreur & rectifier ce probleme...
1ère page: membres.php:
2ème page: inscription.php:
Code html : 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 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <title>membres</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> </br> </br> <p><center><font size="+2" color="#0000FF">Cette page est réservée EXCLUSIVEMENT au personnel de la TRF tozeur.</font></center></p> </br> </br> </br> <center><h2>Déjà inscrit:<br /> <a href = "connexion.php">Connectez-vous ici:</a></h2></center> </br> </br> </br> <center><h2>Nouveau membre:<br /> <a href="inscription.php">inscrivez-vous ici:</a></h2></center> <p> <br /> <br /> <br /> <center> <a href="index.html"><h2 color="red">Retour à l'index</h2></a> <br /> <br /> <br /> <a href="visiteur.html"><h2 color="green">Visiteur</h2></a> </center> </p> </body> </html>
3ème page: connexion.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
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 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <title>inscription</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <?php // Indique le bon format des entêtes (par défaut apache risque de les envoyer au standard ISO-8859-1) header('Content-type: text/html; charset=UTF-8'); /* Création d'une fonction - utilisée dans la récupération des variables - qui teste la configuration get_magic_quotes_gpc du serveur. Si oui, supprime avec la fonction stripslashes les antislashes "\" insérés dans les chaines de caractère des variables gpc (GET, POST, COOKIE) */ function Verif_magicquotes ($chaine) { if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine); return $chaine; } // Initialisation du message de réponse $message = null; // Si le formulaire est envoyé if (isset($_POST['cnrps'])) { /* Récupération des variables issues du formulaire Teste l'existence les données post en vérifiant qu'elles existent, qu'elles sont non vides et non composées uniquement d'espaces. (Ce dernier point est facultatif et l'on pourrait se passer d'utiliser la fonction trim()) En cas de succès, on applique notre fonction Verif_magicquotes pour (éventuellement) nettoyer la variable */ $cnrps = (isset($_POST['cnrps']) && trim($_POST['cnrps']) != '')? Verif_magicquotes($_POST['cnrps']) : null; $pass = (isset($_POST['pass']) && trim($_POST['pass']) != '')? Verif_magicquotes($_POST['pass']) : null; // Si $cnrps et $pass différents de null if(isset($cnrps,$pass)) { /* Connexion au serveur : dans cet exemple, en local sur le serveur d'évaluation A MODIFIER avec vos valeurs */ $hostname = "HOST"; $database = "DATABASE"; $username = "ROOT"; $password = "XXXXX"; $connection = mysql_connect($hostname, $username, $password) or die(mysql_error()); // Connexion à la base mysql_select_db($database, $connection); // Indique à mySql de travailler en UTF-8 (par défaut mySql risque de travailler au standard ISO-8859-1) mysql_query("SET NAMES 'utf8'"); // Préparation des données pour les requêtes à l'aide de la fonction mysql_real_escape_string $nom = mysql_real_escape_string($cnrps); $password = mysql_real_escape_string(sha1($pass)); // Requête pour compter le nombre d'enregistrements répondant à la clause : champ du cnrps de la table = cnrps posté dans le formulaire $requete = "SELECT count(*) as nb FROM membres WHERE cnrps = '".$nom."'"; // Exécution de la requête $req_exec = mysql_query($requete) or die(mysql_error()); // Création du tableau associatif du résultat $resultat = mysql_fetch_assoc($req_exec); // nb est le nom de l'allias associé à count(*) et retourne le résultat de la requête dans le tableau $resultat; if (isset($resultat['nb']) && $resultat['nb'] == 0) // Résultat du comptage = 0 pour ce cnrps, on peut donc l'enregistrer { // Pour enregistrer la date actuelle (date/heure/minutes/secondes) on peut utiliser directement la fonction mysql : NOW() $insertion = "INSERT INTO membres(cnrps,pass,date) VALUES('".$nom."', '".$password."', NOW())"; // Exécution de la requête d'insertion $inser_exec = mysql_query($insertion) or die(mysql_error()); /* Si l'insertion s'est faite correctement (une requête d'insertion retourne "true" en cas de succès, je peux donc utiliser l'opérateur de comparaison strict '===' c.f. http://fr.php.net/manual/fr/language.op ... arison.php) */ if ($inser_exec === true) { /* Démarre la session et enregistre le cnrps dans la variable de session $_SESSION['login'] qui donne au visiteur la possibilité de se connecter. */ session_start(); $_SESSION['login'] = $cnrps; // A MODIFIER Remplacer le '#' par l'adresse de votre page de destination, sinon ce lien indique la page actuelle. $message = 'Votre inscription est enregistrée. <a href = "connexion.php">Cliquez ici pour vous connecter</a>'; } } else { // Le cnrps est déjà utilisé $message = 'Ce identifiant unique est déjà utilisé, changez-le.'; } } else { // Au moins un des deux champs "cnrps" ou "mot de passe" n'a pas été rempli $message = 'Les champs "identifiant unique" et "Mot de passe" doivent être remplis.'; } } ?> <br /> <center><h2>Nouveau membre: <br /> Inscrivez-vous ici:</h2></center> <br /> <style type="text/css"> <!-- body, p, h1,form, input { margin:0; padding:0; } body { background-color:#CCFFFF } #inscription { width:420px; background:#99CCFF; margin:20px auto; font-family: Arial, Helvetica, sans-serif; font-size:1em; border:2px solid #333333; } #inscription h1 { text-align:center; font-size:1.2em; background:#333333; padding-bottom:5px; margin-bottom:15px; color:#00FFFF; letter-spacing:0.05em; } #inscription p { padding-top:15px; padding-right:50px; text-align:center; } #inscription input { margin-left:30px; width:150px; } #inscription #valider { width:155px; font-size:0.8em; } #inscription #message { height:27px; font-size:0.7em; font-weight:bold; text-align:center; padding:10px 0 0 0; } --> </style> <body> <center> <div id = "inscription"> <form action = "inscription.php" method = "post"> <h1>INSCRIPTION</h1> <p><label for = "cnrps">Votre Identifiant unique :</label><input type = "text" name = "cnrps" id = "cnrps" /></p> <p><label for = "pass">Votre mot de passe :</label><input type = "password" name = "pass" id = "pass" /></p> <p><label for = "confpass">Confirmer le mot de passe :</label><input type = "password" name = "confpass" id = "confpass" /></p> <p><input type = "submit" value = "Envoyer" id = "valider" /></p> </form> <p id = "message"> <?php if(isset($message)) echo $message ?></p> </div> </center> <p> <br /> <br /> <br /> <center> <a href="index.html"><h2 color="red">Retour à l'index</h2></a> <br /> <br /> <br /> <a href="visiteur.html"><h2 color="green">Visiteur</h2></a> </center> </p> </body> </html>
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 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Connexion</title> <br /> <center><h2>Déjà inscrit:<br /> Connectez-vous ici:</h2></center> <br /> <?php // Indique le bon format des entêtes (par défaut apache risque de les envoyer au standard ISO-8859-1) header('Content-type: text/html; charset=UTF-8'); /* Création d'une fonction - utilisée dans la récupération des variables - qui teste la configuration get_magic_quotes_gpc du serveur. Si oui, supprime avec la fonction stripslashes les antislashes "\" insérés dans les chaines de caractère des variables gpc (GET, POST, COOKIE) */ function Verif_magicquotes ($chaine) { if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine); return $chaine; } // Initialisation du message de réponse $message = null; // Si le formulaire est envoyé if (isset($_POST['cnrps'])) { /* Récupération des variables issues du formulaire Teste l'existence les données post en vérifiant qu'elles existent, qu'elles sont non vides et non composées uniquement d'espaces. (Ce dernier point est facultatif et l'on pourrait se passer d'utiliser la fonction trim()) En cas de succès, on applique notre fonction Verif_magicquotes pour (éventuellement) nettoyer la variable */ $cnrps = (isset($_POST['cnrps']) && trim($_POST['cnrps']) != '')? Verif_magicquotes($_POST['cnrps']) : null; $pass = (isset($_POST['pass']) && trim($_POST['pass']) != '')? Verif_magicquotes($_POST['pass']) : null; // Si $cnrps et $pass différents de null if(isset($cnrps,$pass)) { /* Connexion au serveur : dans cet exemple, en local sur le serveur d'évaluation A MODIFIER avec vos valeurs */ $hostname = "HOST"; $database = "DATABASE"; $username = "ROOT"; $password = "XXXXX"; $connection = mysql_connect($hostname, $username, $password) or die(mysql_error()); // Connexion à la base mysql_select_db($database, $connection); // Indique à mySql de travailler en UTF-8 (par défaut mySql risque de travailler au standard ISO-8859-1) mysql_query("SET NAMES 'utf8'"); // Préparation des données pour les requêtes à l'aide de la fonction mysql_real_escape_string $nom = mysql_real_escape_string($cnrps); $password = mysql_real_escape_string(sha1($pass)); /* Requête pour récupérer les enregistrements répondant à la clause : champ du cnrps et champ du mdp de la table = cnrps et mdp postés dans le formulaire*/ $requete = "SELECT * FROM membres WHERE cnrps = '".$nom."' AND pass = '".$password."'"; // Exécution de la requête $req_exec = mysql_query($requete) or die(mysql_error()); // Création du tableau associatif du résultat $resultat = mysql_fetch_assoc($req_exec); // Les valeurs (si elles existent) sont retournées dans le tableau $resultat; if (isset($resultat['cnrps'],$resultat['pass'])) { /* Démarre la session et enregistre le cnrps dans la variable de session $_SESSION['login'] qui donne au visiteur la possibilité de visiter les pages protégées. */ session_start(); $_SESSION['login'] = $cnrps; // A MODIFIER Remplacer le '#' par l'adresse de votre page de destination, sinon ce lien indique la page actuelle. $message = 'Bonjour '.htmlspecialchars($_SESSION['login']).' <a href = "gestion.php">Cliquez ici pour vous connecter</a>'; } else { // Le cnrps ou le mot de passe sont incorrect $message = 'Le cnrps ou le mot de passe sont incorrect'; } } else { //au moins un des deux champs "cnrps" ou "mot de passe" n'a pas été rempli $message = 'Les champs cnrps et Mot de passe doivent être remplis.'; } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"><head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>connexion</title> <style type="text/css"> <!-- body, p, h1,form, input { margin:0; padding:0; } body { background-color:#CCFFFF } #connexion { width:420px; background:#99CCFF; margin:20px auto; font-family: Arial, Helvetica, sans-serif; font-size:1em; border:2px solid #333333; } #connexion h1 { text-align:center; font-size:1.2em; background:#333333; padding-bottom:5px; margin-bottom:15px; color:#00FFFF; letter-spacing:0.05em; } #connexion p { padding-top:15px; padding-right:50px; text-align:center; } #connexion input { margin-left:30px; width:150px; } #connexion #valider { width:155px; font-size:0.8em; } #connexion #message { height:27px; font-size:0.7em; font-weight:bold; text-align:center; padding:10px 0 0 0; } --> </style> <div id = "connexion"> <form action = "gestion.html" method = "post"> <h1>connexion</h1> <p><label for = "cnrps">identifiant unique :</label><input type = "text" name = "cnrps" id = "cnrps" /></p> <p><label for = "pass">Mot de passe :</label><input type = "password" name = "pass" id = "pass" /></p> <p><input type = "submit" value = "Envoyer" id = "valider" /></p> </form> <p id = "message"><?php if(isset($message)) echo $message ?></p> </div> <p> <br /> <br /> <br /> <center> <a href="index.html"><h2 color="red">Retour à l'index</h2></a> <br /> <br /> <br /> <a href="visiteur.html"><h2 color="green">Visiteur</h2></a> </center> </p> </html>
Partager