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
A voir également:
- Fonction pour savoir si c'est l'admin
- Fonction si et - Guide
- Livebox admin - Guide
- Mot de passe admin - Guide
- Mot de passe admin freebox - Forum SQL Server
- 192.168.0.1 inwi admin - Forum Réseau
4 réponses
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?
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,
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?
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
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;
}