Fonction pour savoir si c'est l'admin
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour, j'ai créer une fonction pour savoir si c'est l'admin qui est connecté, et si oui, afficher le contenu de la page :
Mais, le soucis, c'est que si c'est l'admin, je n'arrive pas a afficher le contenu, exemple :
Question: Comment faire pour afficher le contenu ?
Merci d'avance
Nils0
function is_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") {
if(file_exists("connexion.php")){
$redirection = header('Location: connexion.php');
} else {
$redirection = header('Location: ../connexion.php');
}
}
} else {
if(file_exists("connexion.php")){
$redirection = header('Location: connexion.php');
} else {
$redirection = header('Location: ../connexion.php');
}
}
if(isset($redirection)){
return $redirection;
}
}
Mais, le soucis, c'est que si c'est l'admin, je n'arrive pas a afficher le contenu, exemple :
<?php if(is_admin()){ ?>
<ul class="article">
<?php
while($n = $art->fetch()) { ?>
<li>
<?php
if(file_exists("miniatures/".$n['id'].".jpg")){
$files = "miniatures/".$n['id'].".jpg";
} elseif(file_exists("miniatures/".$n['id'].".png")){
$files = "miniatures/".$n['id'].".png";
} elseif(file_exists("miniatures/".$n['id'].".jpeg")){
$files = "miniatures/".$n['id'].".jpeg";
} else {
$files = "miniatures/".$n['id'].".gif";
}
if(file_exists($files)){ ?>
<a href="article.php?<?php if(isset($_SESSION['id'])){?>id=<?= $_SESSION['id']; ?>&<?php } ?>article=<?= $n['id']; ?>"><img src="<?php echo $files; ?>" class="img-article" /></a> <br /> <br />
<?php } ?>
<a href="article.php?<?php if(isset($_SESSION['id'])){?>id=<?= $_SESSION['id']; ?>&<?php } ?>article=<?= $n['id']; ?>"><b class="art-titre"><?= $n['titre']; ?></b></a> <br />
<?= "<b>Ecrit le : </b>".$n['date_time_publication']; ?> <br />
<?= $n['description']; ?>
<br /> <hr /> <br /> <br />
</li>
<?php } ?>
</ul>
<?php } ?>
Question: Comment faire pour afficher le contenu ?
Merci d'avance
Nils0
4 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
Je ne comprends pas pourquoi tu faisreturn $redirection;
dans la fonctionis_admin
. Tu ne devrais pas plutôt fairereturn true
oureturn false
? -
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 à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 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
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:if(!isset($_SESSION['id']) AND $userinfo['id'] != $_SESSION['id'] AND $_SESSION['id'] != "1"...
Qu'en attends-tu? -
Bonjour,
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-
-
-
-
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; } -
-