Bonjour à tous,
voilà j'ai un problème avec des sessions, je suis sûr que la solution est simple mais étant donné que je suis débutant en PHP j'arrive pas à trouver.
J'ai donc une application dans laquelle je gère plusieurs groupes d'utilisateurs.
on va dire "grp1" et "grp2" et "admin"
PROBLEME : lorsque je ne suis pas connecté et que j'essaye de me connecter à une page protegée je peux pas : normal, ce qui me gène plus, c'est que lorsque un utilisateur du grp1 ou 2 est connecté il peux accéder à une page protegée de l'espace admin... et vice versa
Pour chaque groupe j'ai un formulaire de connexion spécifique pour "grp1" et "grp2" je récupère l'email et le mot de passe, et pour l'admin je recupère le login et le mdp depuis une page contenant un formulaire puis je les envoient vers une page connexion.php (exemple pour la partie admin) :
Page sécurisée (admin.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 <?php //démarrage de session session_start(); //si la variable de session n'existe pas on la crée if (!isset($_SESSION['logged'])) $_SESSION['logged'] = false; //on inclut les fichiers de config include("../config/config.inc.php"); //On verifie si les champs du fomulaire contenait quelque chose if (isset($_POST['login'], $_POST['mdp']) && !empty($_POST['login']) && !empty($_POST['mdp'])) { //récupération des données du formulaire $login = htmlentities(addslashes($_POST['login'])); $mdp = htmlentities(addslashes($_POST['mdp'])); //Hashage du mot de passe $mdp = md5($mdp); //Connexion à la base de données $db = mysql_connect("$sql_serveur", "$sql_login", "$sql_password"); mysql_select_db("$sql_base",$db); //on verifie que le login existe vraiment $sql = mysql_query("SELECT COUNT(*) AS nb_login FROM admin WHERE login='".$login."'"); //si il le résultat de la requette est différent de 0 if (mysql_result($sql,0,'nb_login') != 0) { // on récupère l'ID et le mot de passe de l'utilisateur $sql_info = mysql_query("SELECT id, mdp FROM admin WHERE login = '$login'"); $donnees_info = mysql_fetch_array($sql_info) or die(); //si le mot de passe est bon if ($donnees_info['mdp'] == $mdp) { //on met à TRUE la variable globale qui nous indique si le membre est connecté. $_SESSION['logged'] = true; //création de la variable qui contient l'id de l'utilisateur $_SESSION['id'] = $donnees_info['id']; //redirection vers l'espace admin header("location: admin.php"); } else { echo "mdp pas correct"; } } else { echo "le compte n'existe pas"; } //Deconnexion mysql_close($db);; } else { echo "z'avez oublié de remplir un champ"; } ?>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <?php //on démarre la session session_start(); //on vérifie que la variable $_SESSION['logged'] existe et vaut bien true. if (isset($_SESSION['logged']) && $_SESSION['logged'] == true) { include("../config/config.inc.php"); etc.... etc....
voilà le fonctionnement est le meme pour les utilisateurs du "grp1" ou "grp2"
Là je me suis donc dit je vais créer une nouvelle variable dans connexion.php comme ceci :
une varibale contenant donc le login de l'admin
Code : Sélectionner tout - Visualiser dans une fenêtre à part $_SESSION['login'] = $login;
et dans admin.php
plutot que de faire ça
je fait ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (isset($_SESSION['logged']) && $_SESSION['logged'] == true)
mais pour le coup plus rien n'est protégé
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (isset($_SESSION['login'])
suis surement un boulet vous allez me diremais je voit pas là....
Dernière question qui n'a rien a voir, le fait de faire un hashage du mot de passe avec md5 est vraiment une bonne protection (enfin c'est pas non plus les serveurs de la CIA,) je demande pas un cryptage sur 256 bits etc... mais un utilisateur lambda ne pourra pas récupérer le mot de passe ?
Merci d'avance à ceux qui aurront pris le temps de se pencher sur mon problème et qui pourront m'aiguiller![]()
Partager