bonjour a tous,
j'ai un souci d'affichage pour la page admin,
les admin on un '1' dans la colonne role et les membre on un '2'
si je veut accéder a la page sans être logger le else marche
si je suis logger admin le if marche
si je suis logger en membre et que je veut accéder a la page le else ne s'affiche pas
et j'arrive pas a trouver le problème pour que le else s'affiche quand on essaye d'aller sur l'admin en tant que membre
voici le code:
<?php
if(Auth::isLogged()){
$login = $_SESSION'Auth']'login'];
mysql_connect(DB_SERVEUR,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);
$sql = "SELECT * FROM users WHERE pseudo='$login' AND role='1'";
$req = mysql_query($sql) or die(mysql_error());
while($data = mysql_fetch_assoc($req))
$ok = 'zone admin bienvenue<br>';
mysql_close();
}
else{
$denied = "<ul><li style='font-size:18px'>acces réservé<a href='index.php'>retour accueil</a></li></ul>";
}
?>
merci a tous de votre aide
C'est pas quelque chose comme ça que tu veux ?
<?php
if(Auth::isLogged()){
$login = $_SESSION'Auth']'login'];
mysql_connect(DB_SERVEUR,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);
$sql = "SELECT * FROM users WHERE pseudo='$login'";
$req = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($req);
$role = $row'role'];
if("1" == $role) {
echo "Bonjour admin !";
}
else {
echo "Bonjour membre !";
}
mysql_close();
}
else{
echo "Accès réservé aux membres";
}
?>
En gros, si t'es co, tu rentres dans le if. Tu fait ta requête sans le rôle, comme te l'as dit Gyuki.
Après tu teste le rôle. Si t'es admin, tu entres dans le premier if, sinon tu rentre dans le deuxième.
Mmmmh...
A ce que je vois, tu as une seule et même table pour les admins et les membres. Donc en quelque sorte tu t'authentifie sur la même table.
En tant qu'admin, tu passes dans le if, c'est normal. Mais en tant que user, tu passes aussi dans le if je pense, puisque tu es authentifié.
Après, comme tu es membre, avec un id à 2, et que tu fait une requête pour cherche avec l'id du membre mais avec l'id à 1, bah tu n'as aucun résultat.
Donc, je pense que tu devrais passer par autre chose que le Auth pour faire la distinction, comme une variable de session que tu ne rempli que pour l'admin ....
Si ce n'est pas ça, dis le moi ^^.
En espérant t'avoir aidé....
Bonjour,
Juste pour information, dans un if,
1 => vrai,
tout nombre différent de 0 vaut vrai puisque le chiffre exist,
un if avec un 'false' vaut vrai puisque c'est une chaine non vide
donc tout dépend de se que tu utilise pour ton if.
S'il retourne le numéro du role alors oui il retourne Vrai.
en faite j'ai crée la table user avec les valeur id,pseudo,pass,mail,role
qui sera utilisé en cas de modification du role (1 ou 2) des membres avec UPDATE (rajout ou suppression d'un admin)
se que j'essaye c'est
si je suis non connecté alors pas d'acces
si je suis connecter si mon role est egal a 1 alors acces autorisé
si je suis connecté si mon role est pas 1 alors pas d'acces
Tu ne devrais pas mettre la condition du rôle dans la requête SQL car si un utilisateur est connecté et si il a un rôle autre que 1 alors la requête va sortir un résultat null. Enlève la condition rôle et fait un if avec le résultat de la requête si rôle === 1 alors ok sinon la suite
Mais personnellement j'aurais plutôt modifier en amont, lorsque tu te connecte, tu récupère aussi le rôle que tu met en session et une fois arrivé a la page que tu désire protéger, plus besoin de faire appel a la base de données, puisque tu peux lire la variable en session. Et si la variable est a 1 alors admin sinon non.
les resultat sont:
(tout les essai) soit
personne n'a acces.
sinon sa ma aussi dit connecté ok acces (admin ou membre)
ou sinon pas d'affichage ni de if ni de else pour les membre admin et visiteur.
j'arrive plus a reflechir la merci encore de ton aide je continue demain les essais ^^
pow merci ta solution fonctionne sa fait deux jour que je bataille
g modifier et ecrit ton bout de code
$role = $row'role'];
if("1" == $role) {
echo "Bonjour admin !";
}
et miracle sa marche :) merci encore