Gestion droits utilisateurs

Résolu
Ibilolz Messages postés 148 Statut Membre -  
Nhay Messages postés 838 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, j'ai une table utilisateur dans laquelle j'ai un champ rang avec 0 ou 1.
Je voudrais que les utilisateurs qui ont la valeur rang 1 puisse être redirigé vers index2.php et ceux qui ont la valeur rang 0 puisse être redirigé vers index3.php.

J'ai donc écrit le code suivant :

     if (isset($_SESSION[rang]==1))
                          
                          { 
                               header("location: index2.php" ); 
                           }


Que j'ai mis dans mon fichier de connexion en dessous de la vérification et de l'enregistrement dans les sessions :

<?php
include('config2.php');
//Si lutilisateur est connecte, on le deconecte
	if(isset($_SESSION['username']))
	{
        //On le deconecte en supprimant simplement les sessions username et userid
        unset($_SESSION['username'], $_SESSION['userid']);
	header("location: index.html" );
?>
<?php
}
else
{
        $ousername = '';
        //On verifie si le formulaire a ete envoye
        if(isset($_POST['username'], $_POST['password']))
        {
                //On echappe les variables pour pouvoir les mettre dans des requetes SQL
                if(get_magic_quotes_gpc())
                {
                        $ousername = stripslashes($_POST['username']);
                        $username = mysql_real_escape_string(stripslashes($_POST['username']));
                        $password = stripslashes($_POST['password']);
                }
                else
                {
                        $username = mysql_real_escape_string($_POST['username']);
                        $password = $_POST['password'];
                }
                //On recupere le mot de passe de lutilisateur
                $req = mysql_query('select password,id from users where username="'.$username.'"');
                $dn = mysql_fetch_array($req);
                //On le compare a celui quil a entre et on verifie si le membre existe
                if($dn['password']==$password and mysql_num_rows($req)>0)
                {
                        //Si le mot de passe es bon, on ne vas pas afficher le formulaire
                        $form = false;
                        //On enregistre son pseudo dans la session username et son identifiant dans la session userid
                        $_SESSION['username'] = $_POST['username'];
                        $_SESSION['userid'] = $dn['id'];
                    
                         if (isset($_SESSION[rang]==1))
                          
                          { 
                               header("location: index2.php" ); 
                           }
                        else
                                {header("location: index3.php" );}
                }
                else
                {
                        //Sinon, on indique que la combinaison nest pas bonne
                        
                        echo 'La combinaison n\'est pas bonne.';
                        header("location: index.html" );
                }
        }
        else
        {
                
        }

}        
?>


Et depuis je reste bloqué à l'acceuil, la connexion ne marche plus ni la redirection.

2 réponses

  1. Utilisateur anonyme
     
    Hello,

    ce que tu fais c'est que tu test si $_SESSION['rang'] == 1 (ce qui te retourne un true/false et tu passe ceci à ta fonction isset().

    ce qu'il faudrait faire c'est la chose suivante :

    if(isset($_SESSION['rang']))
    {
       if($_SESSION['rang']==1) header('location:index2.php');
       else header('location:index3.php');
    }
    


    P.S. petites remarques :)
    - tu as oublié les guillemets à la ligne 42 : $_SESSION[rang]
    - tu la créer peut être ailleurs, mais dans ton code ci-dessus, à aucun moment tu créé la variable $_SESSION['rang'].

    A+ Seezer
    0
  2. Ibilolz Messages postés 148 Statut Membre
     
    Merci de ta réponse, j'ai fais la modification que tu m'as écrite mais j'ai toujours une erreur à cause de la variable non déclarée $_SESSION['rang'] je peux la crée comment dans mon code ??
    0
    1. Ibilolz Messages postés 148 Statut Membre
       
      J'ai fait ceci mais page blanche, pas de redirection lors de la connection, il doit y avoir une erreur dans le code .

      <?php
      include('config2.php');
      //Si lutilisateur est connecte, on le deconecte
      if(isset($_SESSION['username']))
      {
      //On le deconecte en supprimant simplement les sessions username et userid
      unset($_SESSION['username'], $_SESSION['userid']);
      header("location: index.html" );
      ?>
      <?php
      }
      else
      {
      $ousername = '';
      //On verifie si le formulaire a ete envoye
      if(isset($_POST['username'], $_POST['password']))
      {
      //On echappe les variables pour pouvoir les mettre dans des requetes SQL
      if(get_magic_quotes_gpc())
      {
      $ousername = stripslashes($_POST['username']);
      $username = mysql_real_escape_string(stripslashes($_POST['username']));
      $password = stripslashes($_POST['password']);
      }
      else
      {
      $username = mysql_real_escape_string($_POST['username']);
      $password = $_POST['password'];
      }
      //On recupere le mot de passe de lutilisateur
      $req = mysql_query('select password,id from users where username="'.$username.'"');
      $dn = mysql_fetch_array($req);
      //On le compare a celui quil a entre et on verifie si le membre existe
      if($dn['password']==$password and mysql_num_rows($req)>0)
      {
      //Si le mot de passe es bon, on ne vas pas afficher le formulaire
      $form = false;
      //On enregistre son pseudo dans la session username et son identifiant dans la session userid
      $_SESSION['username'] = $_POST['username'];
      $_SESSION['userid'] = $dn['id'];
      $_SESSION['rang'] = $dn['rang'];

      if(isset($_SESSION['rang']))
      {
      if($_SESSION['rang']==1) header('location:index2.php');
      else header('location:index3.php');
      ?}
      }
      else
      {
      //Sinon, on indique que la combinaison nest pas bonne

      echo 'La combinaison n\'est pas bonne.';
      header("location: index.html" );
      }
      }
      else
      {

      }

      }
      ?>
      0
    2. Nhay Messages postés 838 Date d'inscription   Statut Membre Dernière intervention   126
       
      Pas de session_start() ?
      0
    3. Ibilolz Messages postés 148 Statut Membre
       
      si dans mon config2.php avec la co à la BD
      0
    4. Nhay Messages postés 838 Date d'inscription   Statut Membre Dernière intervention   126
       
      Tu a un petit point interrogation après le header vers index3, faute de frappe ?
      Sinon, dans ton code, mets des echo dans chaque if/else tu verra ainsi quel condition n'est pas remplit.
      0
    5. Ibilolz Messages postés 148 Statut Membre
       
      oui, faut de frappe ^^ le echo ne passe pas au niveau du isset session rang :/
      0