Fonction pour savoir si c'est l'admin
Résolu/Fermé
A voir également:
- Fonction pour savoir si c'est l'admin
- Fonction si et - Guide
- Livebox admin - Guide
- Fonction moyenne excel - Guide
- Cmd admin - Guide
- Mot de passe admin - Guide
4 réponses
yg_be
Messages postés
23412
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 décembre 2024
Ambassadeur
1 557
22 déc. 2016 à 14:55
22 déc. 2016 à 14:55
Je ne comprends pas pourquoi tu fais
return $redirection;dans la fonction
is_admin. Tu ne devrais pas plutôt faire
return trueou
return false?
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
22 déc. 2016 à 14:55
22 déc. 2016 à 14:55
Salut,
Le problème vient du retour de la fonction is_admin.
Si tu veux pouvoir utiliser cette fonction directement dans la condition d'un if, celle-ci doit retourner un booléen true ou false.
Or actuellement ta fonction retourne la variable $redirection qui elle contient le retour de la fonction header() qui ne renvoie pas de valeur de retour.
Le retour de ta fonction est donc actuellement équivalent à
Il faut donc modifier ta fonction is_admin() pour lui faire retourner uniquement true ou false. Les redirections ne devraient pas être gérées dans cette fonction.
Bonne journée,
Le problème vient du retour de la fonction is_admin.
Si tu veux pouvoir utiliser cette fonction directement dans la condition d'un if, celle-ci doit retourner un booléen true ou false.
Or actuellement ta fonction retourne la variable $redirection qui elle contient le retour de la fonction header() qui ne renvoie pas de valeur de retour.
Le retour de ta fonction est donc actuellement équivalent à
return null;qui est donc toujours interprété comme le booléen false dans ta condition if.
Il faut donc modifier ta fonction is_admin() pour lui faire retourner uniquement true ou false. Les redirections ne devraient pas être gérées dans cette fonction.
Bonne journée,
yg_be
Messages postés
23412
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 décembre 2024
1 557
22 déc. 2016 à 18:01
22 déc. 2016 à 18:01
@Nils0. Pitet te fait une suggestion importante: ne pas laisser les redirections dans la fonction is_admin, et les exécuter dans le php principal, par exemple en "else" du "if is_admin".
yg_be
Messages postés
23412
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 décembre 2024
1 557
22 déc. 2016 à 19:41
22 déc. 2016 à 19:41
exactement!
yg_be
Messages postés
23412
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 décembre 2024
Ambassadeur
1 557
22 déc. 2016 à 15:24
22 déc. 2016 à 15:24
Je suis étonné de l'utilisation du $GET pour retrouver l'identification de l'utilisateur, alors que tu a aussi l'identification dans la session, si je vois bien.
Je me demande si ton test fonctionne bien:
Je me demande si ton test fonctionne bien:
if(!isset($_SESSION['id']) AND $userinfo['id'] != $_SESSION['id'] AND $_SESSION['id'] != "1"...Qu'en attends-tu?
yg_be
Messages postés
23412
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 décembre 2024
1 557
22 déc. 2016 à 17:37
22 déc. 2016 à 17:37
Je pense que ton test n'est pas logique. Peut-être des
ORau lieu des
AND?
Utilisateur anonyme
Modifié par Nils0 le 22/12/2016 à 17:38
Modifié par Nils0 le 22/12/2016 à 17:38
Bonjour,
MERCI BEAUCOUP de m'avoir répondu...
J'ai modifié ma fonction, et ça MARCHE :
Je tiens juste a préciser que je suis ados et que je commence tous juste a me débrouiller en php ...
Merci
Nils0
MERCI BEAUCOUP de m'avoir répondu...
J'ai modifié ma fonction, et ça MARCHE :
function is_admin(){ // savoir si c'est l'admin if(isset($_GET['id']) AND $_GET['id'] > 0) { if(!isset($bdd)){ $bdd = connexion_bdd(); } $getid = intval($_GET['id']); $requser = $bdd->prepare('SELECT * FROM membres WHERE id = ?'); $requser->execute(array($getid)); $userinfo = $requser->fetch(); if(isset($_SESSION['id']) AND $userinfo['id'] == $_SESSION['id'] AND $_SESSION['id'] == "1" AND $userinfo['niveau'] == "administrateur") { return true; } else { if(file_exists("connexion.php")){ header('Location: connexion.php'); } else { header('Location: ../connexion.php'); } } } else { if(file_exists("connexion.php")){ header('Location: connexion.php'); } else { header('Location: ../connexion.php'); } } }
Je tiens juste a préciser que je suis ados et que je commence tous juste a me débrouiller en php ...
Merci
Nils0
yg_be
Messages postés
23412
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 décembre 2024
1 557
22 déc. 2016 à 17:39
22 déc. 2016 à 17:39
Je te suggère de rajouter
return false;à la fin de la fonction.
Voilà :
function is_admin(){ // savoir si c'est l'admin if(isset($_GET['id']) AND $_GET['id'] > 0) { if(!isset($bdd)){ $bdd = connexion_bdd(); } $getid = intval($_GET['id']); $requser = $bdd->prepare('SELECT * FROM membres WHERE id = ?'); $requser->execute(array($getid)); $userinfo = $requser->fetch(); if(isset($_SESSION['id']) AND $userinfo['id'] == $_SESSION['id'] AND $_SESSION['id'] == "1" AND $userinfo['niveau'] == "administrateur") { return true; } else { if(file_exists("connexion.php")){ header('Location: connexion.php'); } else { header('Location: ../connexion.php'); } } } else { if(file_exists("connexion.php")){ header('Location: connexion.php'); } else { header('Location: ../connexion.php'); } } return false; }
yg_be
Messages postés
23412
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 décembre 2024
1 557
>
Utilisateur anonyme
22 déc. 2016 à 17:48
22 déc. 2016 à 17:48
Oui, pour "décider" ce que la fonction retourne, pour que ce soit clair et éviter les surprises.