Gestion droits utilisateurs

Résolu/Fermé
Ibilolz
Messages postés
119
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
18 décembre 2014
- Modifié par Ibilolz le 12/05/2014 à 15:28
Nhay
Messages postés
838
Date d'inscription
vendredi 2 novembre 2012
Statut
Membre
Dernière intervention
17 décembre 2015
- 13 mai 2014 à 18:08
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

Utilisateur anonyme
12 mai 2014 à 15:49
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
Ibilolz
Messages postés
119
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
18 décembre 2014

Modifié par Ibilolz le 13/05/2014 à 09:38
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
Ibilolz
Messages postés
119
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
18 décembre 2014

13 mai 2014 à 12:19
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
Nhay
Messages postés
838
Date d'inscription
vendredi 2 novembre 2012
Statut
Membre
Dernière intervention
17 décembre 2015
126
13 mai 2014 à 12:42
Pas de session_start() ?
0
Ibilolz
Messages postés
119
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
18 décembre 2014

13 mai 2014 à 12:44
si dans mon config2.php avec la co à la BD
0
Nhay
Messages postés
838
Date d'inscription
vendredi 2 novembre 2012
Statut
Membre
Dernière intervention
17 décembre 2015
126
13 mai 2014 à 13:00
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
Ibilolz
Messages postés
119
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
18 décembre 2014

13 mai 2014 à 13:03
oui, faut de frappe ^^ le echo ne passe pas au niveau du isset session rang :/
0