Bonjour,

J'ai un petit souci je ne sais pas comment coder cette partie pourtant ça a l'aire simple.

Voila ce que je récupère après le login :

array (size=3)
  'csrf' => string '9a6f3b80aa4ad848bddca6e0f9a5c611' (length=32)
  'Auth' => 
    array (size=8)
      'id' => string '2' (length=1)
      'username' => string 'admin' (length=5)
      'password' => string 'd033e22ae348aeb5660fc2140aec35850c4da997' (length=40)
      'date' => string '2014-08-28 02:18:43' (length=19)
      'email' => string 'admin@admin.com' (length=15)
      'token' => string '5bb579bf4e913a3a4836da012b6aa3a7fefe71a5' (length=40)
      'niveau' => string '9' (length=1)
      'slug' => string 'administrateur' (length=14)
  'Flash' => 
    array (size=2)
      'message' => string 'Vous êtes bien connecté !' (length=27)
      'type' => string 'success' (length=7)

Maintenant je voudrai récupéré le slug ou le niveau pour faire en sorte que si on est pas admin bien on est redirigé, Je fait le code comme cela :

if($_SESSION"Auth"]"slug"] = "membre"){
    setFlash('Vous n\'êtes pas administrateur','danger');
    header('Location:' . WEBROOT . 'index.php#cat');
    die();
}else{
    if($_SESSION"Auth"]"slug"] = "administrateur"){
    echo "salut ! admin";
    }
}

ça ne fonctionne pas je suis tous le temps redirigé même avec le rang admin.

Avec le niveau ça fonctionne mai je voudrai utilisé les rangs c'est plus facile a mettre en place. Avez-vous une aide a me proposée ? ce serai sympa de votre part !

En vous remerciant...

EDIT

J'ai modifier le truc en faisant ça :

if($_SESSION"Auth"]"slug"] == "membre" OR $_SESSION"Auth"]"slug"] == "non-actif"){
    echo "pas admin";
}else{
    if($_SESSION"Auth"]"slug"] == "admin"){
    echo "admin";
    }
}

Selon vous es-ce-que c'est correcte comme syntaxe ?

5 réponses


Yentia
Réponse acceptée

re,

Non tu ne peux pas stocker la condition dans une variable, ce que tu peux faire en revanche c'est stocker ce que contient $_SESSION"Auth"]"slug"]
et faire ensuite :

$slug_role = $_SESSION"Auth"]"slug"];
if($slug_role == "membre" || $slug_role == "non-actif"){
    echo "pas admin";
}else if($slug_role == "admin"){
    echo "admin";  
}

concernant ton deuxieme teste c'est sa en gros, sauf un probleme ici :

else if($count == 1 || $_SESSION"Auth"]"slug"] == "admin"){ /* connecter en tant qu'admin */
  on affiche le lien administration + logout
}

il ne faut pas mettre || qui vaut "ou" mais plus && ( et commercial) qui vaut "et" car il faut que l'administrateur soit connecté ET aussi le role admin mais pas l'un OU l'autre, il faut les deux !

donc :

if($count == 0){ /* pas connecter */
  Lien de redirection vers la page de login
}else if($count == 1){/* connecter */
  lien vers le logout
}else if($count == 1 && $_SESSION"Auth"]"slug"] == "admin"){ /* connecter en tant qu'admin */
  lien vers l'administration + logout etc ...
}

Sinon n'hésite pas a testé ton code et a faire des essais pour vérifier et comprendre par toi même. Tu peux également faire des recherches sur google pour connaitre les conditions en php vue que tu ne connaissais pas la syntaxe.

Voila Bonne continuation

Salut,

En effet il faut mettre == plutot que = car = est une affection et pas une verification
concernant le OR je mettrai plutot || qui signifie ou et le else if n'est pas bon

comme ça :

if($_SESSION"Auth"]"slug"] == "membre" || $_SESSION"Auth"]"slug"] == "non-actif"){
    echo "pas admin";
}else if($_SESSION"Auth"]"slug"] == "admin"){
    echo "admin";  
}

Cordialement

neecride
Auteur

Merci de votre réponse rapide !

Aussi n'y a t'il pas moyen de stocker ça dans une variable ? du genre :

$nonadmin = $_SESSION"Auth"]"slug"] == "membre" || $_SESSION"Auth"]"slug"] == "non-actif";
$admin = $_SESSION"Auth"]"slug"] == "admin";

Puis ça c'est stocker en session il faut être connecter pour que c'est variable fonctionne, alors si je veut cacher un lien etc... d'un visiteur il faut vérifier s'il y a un count via les session :

if($count == 0){ /* pas connecter */
     on affiche un lien login
   }else if($count == 1){/* connecter */
     on affiche un lien logout
   }else if($count == 1 || $_SESSION"Auth"]"slug"] == "admin"){ /* connecter en tant qu'admin */
     on affiche le lien administration + logout
   }

Dites moi si je je suis sur la bonne voie !!

Encore merci.

neecride
Auteur

Merci de ton aide je pensée que c'étais un truc du genre mai n'étais pas sur.

Encore merci je vais retenir cette histoire de OR et || et && etc...

neecride
Auteur

Bonjour,

Je reviens sur ce poste afin de savoir si il n'y a pas mieux comme vérification ! je trouve le code trop long si je doit faire ça a chaque fois pour cacher un lien ou autre.

Voila ce que j'ai fait :

<?php 
if(isset($_SESSION"Auth"]"id"])){// on verifie si on a un id en session
?>
        <h4 class="titre-block-right">Bonjour <span><?php echo $_SESSION"Auth"]"username"]; ?></span></h4>
        <span>vous êtes conecté en tant que <?php echo $_SESSION"Auth"]"slug"]; ?></span>
<?php 
if($_SESSION"Auth"]"slug"] == 'admin'){ // si on admin on affiche le lien
?>
        <li><a href="<?= WEBROOT; ?>admin#cat">Administration</a></li>
<?php 
}else{ // sinon on affiche rien

}if($_SESSION"Auth"]"slug"] == 'membre' || $_SESSION"Auth"]"slug"] == 'admin' || $_SESSION"Auth"]"slug"] == 'modo'){// si on est membre admin ou modo  
?>

        <li><a href="<?= WEBROOT; ?>users/index.php#cat">Compte</a></li>
        <li><a href="<?= WEBROOT; ?>logout.php#cat">Déconexion</a></li>
<?php 
}
}else if(!isset($_SESSION"Auth"]"id"])){// si on a pas de conexion  
?>
        <h4 class="titre-block-right">Bonjour <span>Invité</span></h4>
        <li class="active animated fadeIn"><a href="<?= WEBROOT; ?>login.php#cat">Login</a></li>
<?php
}else{
} 
?>

J'ai essayer de faire une fonction :

function link_auth(){
    if(isset($_SESSION"Auth"]"id"])){

        if($_SESSION"Auth"]"slug"] == 'admin'){ //si on est admin

            $link_admin = ''. WEBROOT .'admin#cat';

        }if($_SESSION"Auth"]"slug"] == 'membre' || $_SESSION"Auth"]"slug"] == 'admin' || $_SESSION"Auth"]"slug"] == 'modo'){ //si on est membre

            $link_compte = '' . WEBROOT . 'users/compte.php#cat';
            $link_logout = ''.WEBROOT .'logout.php#cat';    

        }

    }else if(!isset($_SESSION"Auth"]"id"])){ //si on est pas conecter
        $link_login = ''.WEBROOT .'login.php#cat';
    }
}

En gros je veut par cette fonction l'appeler où j'en ai besoin et faire un lien avec les variables stocker dans mon fichier variables.php mai j'ai des soucie avec cette technique ça me retourne pleins d'erreur de session.

Vous m'avez déjà bien renseigner pour mes autres demande, si vous avez encore un coup de main a me donnée ce serai cool !