Bonjour, j'ai une application qui comporte deux niveaux de sessions.
Une admin et une membre.
--> J'aimerais afficher dans une même page que certaines partie de la page en fonction du statut de la personne.
Voilà comment est ma page index.php :
Et comment se compose la page auth :
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 <?php session_start(); require("auth.php"); if(Auth::isLogged()) { header('location:indexdejalog.php'); } if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) { $login = ($_POST['login']); $pass= ($_POST['pass']); $pass=sha1($pass); // on crypte le mot de passe tapé en sha1 $con = odbc_connect("geststockmazars","",""); // on se connecte à la base de données $sql = " SELECT id,statut FROM users WHERE login='$login' and pass='$pass'"; // on effectue la requête sql $req = odbc_do($con, $sql)or die( odbc_error() ); // on teste le nombre de résultat if(odbc_num_rows($req)>0) { // s'il est supérieur à 0 c'est que l'utilisateur existe $data= odbc_fetch_array($req); // on créé un tableau de session où on stocke les différentes informations $_SESSION['Auth'] = array( 'login' => $login, 'pass' => $pass, 'statut' => $data['statut']); //on teste si il est admin ou non et en fonction de cela on le redirige if($_SESSION['Auth']['statut'] == 'admin') { header('Location:pageprivee.php'); } else { header('Location:pagepublique.php'); } } } [....] <form action="index.php" method="post"> <h4> Merci d'entrez vos identifiants afin d'accéder au gestionnaire </h4> Login: <input type="text" name="login" value=""><br> Mot de passe: <input type="password" name="pass" value=""><br> <p> <input type="submit" value="Se connecter"> <input name="retour" type="button" value="Retour" onClick="history.go(-1)"> </p> </form>
CHOSE IMPORTANTE A NOTER ! Si je change la partie en orange par :
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 <?php Class Auth{ static function isLogged() { if(isset($_SESSION['Auth']) && isset($_SESSION['Auth']['login']) && isset($_SESSION['Auth']['pass']) ) { extract($_SESSION['Auth']); $con = odbc_connect("geststockmazars","",""); $sql = " SELECT id from users where login='$login' and pass='$pass'"; $req = odbc_do($con, $sql)or die( odbc_error() ); if(odbc_num_rows($req)>0) { return true; } else { return false; } } else { return false; } } static function isAdmin() { if(isset($_SESSION['Auth']) && isset($_SESSION['Auth']['login']) && isset($_SESSION['Auth']['pass']) ) { extract($_SESSION['Auth']); $con = odbc_connect("geststockmazars","",""); $sql = " SELECT statut from users where login='$login' and pass='$pass'"; $req = odbc_do($con, $sql)or die( odbc_error() ); if($req == 'admin') { return true; } else { return false; } } else { return false; } } } ?>
if($req = 'admin')
Je n'ai plus ce problème de redirection mais ça ne résoud pas mon problème
Le problème que j'ai est que lorsque je me connecte avec l'utilisateur ayant les droits d'admin je suis automatiquement redirigé vers la page indexdejalog.php (cf partie en couleur) alors que normalement l'admin n'est pas encore logué vu que la mise en place de auth se fait dans la boucle après.
Je n'ai en revanche pas de problèmes pour la partie membre qui est bien redirigé vers la bonne page.
COmment faire ?
--> De plus, j'ai aussi un problème lors de l'affichage de menu, dans les pages communes aux deux niveaux de session, en fonction de si la personne loguée est membre ou admin.
Je n'arrive pas à afficher le menu que je souhaite.
VOilà un exemple d'une partie d'une age :
Je teste qui est connecté grâce à ma fonction isAdmin et j'affiche en conséquence.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 if(Auth::isAdmin()) { include("menuhautprivee.php"); } else { include("menuhautpublic.php"); }
Conclusion : il semble y avoir un problème avec ma fonction isAdmin.
Merci d'avance !!!
Partager