Bonjour, je suis actuellement étudiante en école d'ingénieur (pas d'informatique malheureusement, vous l'aurez compris) et je fais partie du bureau d'étudiant. Comme j'aime beaucoup apprendre de nouvelles choses, je me suis lancée dans la construction de notre site Web.
J'ai donc appris toute seule et jusqu'ici tout fonctionnait bien jusqu'à ce que je me lance dans l'espace membre...
J'ai donc créées 4 pages : la page de connexion, la page d'inscription, la page personnelle et la page de déconnexion.
Je veux voux préciser aussi que cet espace membre est un espace membre restreint, seules les personnes présentes dans la base données pourront s'y connecter.
La page d'inscription fonctionne à merveille, les erreurs qui s'affichent correspondent bien aux erreurs réalisées.
Quand je lance mon inscription, les données vont bien s'insérer dans ma base de données à la seule exception que je souhaite crypter les mots de passe en MD5 et lorsque j'utilise des sites tels que : http://www.md5.fr/, je n'obtiens pas le meme code que celui qui a été généré dans ma base de données... Mais sinon ça marche
Voici le script de la page "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 <?php if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') { if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) { if ($_POST['pass'] != $_POST['pass_confirm']) { $erreur = 'Les 2 mots de passe sont différents.'; } else { $base = mysql_connect ('localhost', 'root', 'root'); mysql_select_db ('Cercle ENSCCF', $base); $sql = 'SELECT * FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"'; $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); $data = mysql_fetch_array($req); if ($data['login'] != NULL && $data['pass_md5'] == NULL) { $sql = 'UPDATE membre SET pass_md5="'.mysql_escape_string(md5($_POST['pass_md5'])).'" WHERE login ="'.mysql_escape_string($_POST['login']).'"'; mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); session_start(); $_SESSION['login'] = $_POST['login']; header('Location: espace membre/membre.php'); exit(); } elseif($data['login'] == NULL) { $erreur = 'Vous n\'êtes pas autorisé à accéder à cet espace membre.'; } elseif($data['pass_md5'] != NULL) { $erreur = 'Cette personne possède déjà un compte.'; } } } else { $erreur = 'Au moins un des champs est vide.'; } } ?> <html> <head> <title>Inscription</title> </head> <body> <form action="inscription.php" method="post"> <strong>E-mail :</strong> <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br /> <strong>Mot de passe :</strong> <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br /> <strong>Confirmation du mot de passe :</strong> <input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlentities(trim($_POST['pass_confirm'])); ?>"><br /> <center><input type="submit" name="inscription" value="Inscription"></center> </form> <?php if (isset($erreur)) echo '<br />',$erreur; ?> </body> </html>
Pour ce qui est de la page de connexion, là, c'est plus embetant...
En utilisant le login et le mot de passe précédemment rentrés lors de l'inscription, j'obtiens l'erreur "Au moins un des champs est vide"... Je n'arrive pas a comprendre. Je pensais que c'était le fait que mon cryptage était faux donc j'ai modifié le md5 directement dans ma base de données et j'ai réessayé : pas mieux...
Si vous voyez une erreur qui aurait pu m'échapper, je suis preneuse mais là, je commence vraiment à m'arracher les cheveux ^^
Voici le script de la page "accueil.php" :
Je vous remercie d'avance de votre aide
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 <h1>Espace membres</h1> <?php // on teste si le visiteur a soumis le formulaire de connexion if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') { if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass_md5']) && !empty($_POST['pass_md5']))) { $base = mysql_connect ('localhost', 'root', 'root'); mysql_select_db ('Cercle ENSCCF', $base); // on teste si une entrée de la base contient ce couple login / pass $sql = 'SELECT * FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md5="'.mysql_escape_string(md5($_POST['pass_md5'])).'"'; $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); $data = mysql_fetch_array($req); mysql_free_result($req); mysql_close(); // si on obtient une réponse, alors l'utilisateur est un membre if ($data['login'] != NULL) { session_start(); $_SESSION['login'] = $_POST['login']; header('Location: membre.php'); exit(); } // si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe elseif ($data['login'] == NULL) { $erreur = 'Compte non reconnu.'; } // sinon, alors la, il y a un gros problème :) else { $erreur = 'Problème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.'; } } else { $erreur = 'Au moins un des champs est vide.'; } } ?> <html> <head> <title>Accueil</title> </head> <body> <br /> <form action="accueil.php" method="post"> <p class="login"><strong>Login :</strong></p> <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br /> <p class="mdp"><strong>Mot de passe :</strong></p> <input type="password" name="pass" value="<?php if (isset($_POST['pass_md5'])) echo htmlentities(trim($_POST['pass_md5'])); ?>"><br /> <input type="submit" name="connexion" value="Connexion"> </form> <a href="inscription.php">S'inscrire</a> <?php if (isset($erreur)) echo '<br /><br />',$erreur; ?> </body> </html>
Clémence.
Partager