Gestion droits utilisateurs [Résolu/Fermé]

Signaler
Messages postés
119
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
18 décembre 2014
-
Messages postés
838
Date d'inscription
vendredi 2 novembre 2012
Statut
Membre
Dernière intervention
17 décembre 2015
-
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


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
Messages postés
119
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
18 décembre 2014

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 ??
Messages postés
119
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
18 décembre 2014

juste une dernière question, si je veux que il me verifie le mdp mais en md5, que je mette mes mdp en md5 dans ma table ou je peux rajouter le hashage dans mon code ?
Messages postés
838
Date d'inscription
vendredi 2 novembre 2012
Statut
Membre
Dernière intervention
17 décembre 2015
122
L'intérêt de chiffrer le mot de passe, c'est de le rendre illisible dans la base, sinon ça ne sert pas à grand chose.
md5 n'est pas conseillé par contre, regarde plutôt dû côté de la fonction crypt.
Messages postés
119
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
18 décembre 2014

Mais j'ai cru comprendre qu'il n'existe pas de fonction pour décrypter, l'administrateur ne connaîtra donc pas les mdp ??
Utilisateur anonyme
Pour ta dernière question, c'est l'intérêt du hashage :
- quand l'utilisateur va créer son mot de passe
- mypassword il se transformera en HJGJK/&çHJFççHGFHçGç (c'est pas vraiment ça)
- du coup dans ta base de donnée tu ne verras que HJGJK/&çHJFççHGFHçGç

Ensuite pour vérifier si l'utilisateur à taper le bon mot de passe sur la page de connexion tu devras faire ..

md5(mot de passe que l'internaute a tapé) == HJGJK/&çHJFççHGFHçGç ?

du coup si l'utilisateur à tapé mypassword -> md5(mypassword) = HJGJK/&çHJFççHGFHçGç donc HJGJK/&çHJFççHGFHçGç == HJGJK/&çHJFççHGFHçGç et l'utilisateur sera logé.

après libre à toi d'utiliser MD5,SHA1 ou Crypt.

Cordialement
Messages postés
838
Date d'inscription
vendredi 2 novembre 2012
Statut
Membre
Dernière intervention
17 décembre 2015
122
Nan, pour la récupération de mot de passe (si il est oublié) il faudra en recréer un nouveau.
SI il existe une fonction pour décrypter, ça signifie que quelqu'un avec ton mot de passe crypter pour le déchiffrer aisément, donc ça servirait pas à grand chose.