Bonjour , je viens de suivre le tutoriel sur les authorisations d'utilisateurs. j'ai tout qui fonctionne à peu près comme il faut sauf que la page admin et accessible meme si je ne suis pas logger. voici ma page class.auth.php
<?php class Auth{
var $forbiddenPage = "index.php?p=forbidden";
/**
*Permet d'identifier un utilisateur.
**/
function login($d){
global $PDO;
$req = $PDO->prepare('SELECT users.id,users.login,users.address,roles.name,roles.slug,roles.level FROM users LEFT JOIN roles ON users.role_id=roles.id WHERE login=:login AND password=:password');
$req->execute($d);
$data = $req->fetchAll();
if(count($data)>0){
$_SESSION'Auth'] = $data [0];
return true;
}
return false;
}
/**
*Autorise un rang à accéder à une page, redirige vers forbidden sinon
**/
function allow($rang){
global $PDO;
$req = $PDO->prepare('SELECT slug,level FROM roles');
$req->execute();
$data = $req->fetchAll();
$roles = array();
foreach($data as $d){
$roles$d->slug] = $d->level;
}
if(!$this->user('slug')){
$this->forbidden();
}else{
if($roles$rang]> $this->user('level')){
$this->forbidden();
}else{
return true;
}
}
}
/**
*Récupère une info utilisateur
**/
function user($field){
if(isset($_SESSION'Auth']->$field)){
return $_SESSION'Auth']->$field;
}else{
return false;
}
}
/**
*Redirige un utilisateur
**/
function forbidden(){
header('Locaton:'.$this->forbiddenPage);
}
}
$Auth = new Auth();
?>
et admin.php
<?php $Auth -> allow('admin');?>
<p>ADMIN</p>
J'ai essayé pendant pas mal de temps puis vérifier les erreurs aussi mais ne comprends pas
Merci
On peut voir à quoi ressemble ta variable $roles après le foreach ? Tu as mis des echo un peu partout pour voir ou allée ta fonction allow ?
euuh... si je fais print_r($roles) ça m'affiche ça
Array ( [admin] => 2 ) Array ( [admin] => 2 [member] => 1 )
merci pour ton aide précieux et pour ce super tutoriel !
j'ai fait un echo rang juste avant le if et après le foreach çam'affiche membre pour les 2 comptes
sinan quand je vais sur la page admin.php sans me logguer j'ai admin(avec echo $rang) , et quand chuis sur n'importe quelle compte(membre ou admin) sur la page compte j'ai member, et sur la page j'ai admin (toujours avec echo $rang)
merci encore désolé pour ma newbititude