IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème de droits utilisateurs


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 196
    Par défaut Problème de droits utilisateurs
    Bonjour, j'ai une application qui comporte deux niveaux de sessions.
    Une admin et une membre.

    --> J'aimerais afficher dans une même page que certaines partie de la page en fonction du statut de la personne.
    Voilà comment est ma page index.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    <?php 
    
    session_start();
    	
    require("auth.php");
    
    if(Auth::isLogged())
    {	
    	header('location:indexdejalog.php');
    }
    
    if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass']))
    {
    	
    	$login = ($_POST['login']);
    	$pass= ($_POST['pass']);
    	$pass=sha1($pass); // on crypte le mot de passe tapé en sha1
    	$con = odbc_connect("geststockmazars","",""); // on se connecte à la base de données
    	$sql = " SELECT id,statut FROM users WHERE login='$login' and pass='$pass'";
    
    	// on effectue la requête sql
    		$req = odbc_do($con, $sql)or die( odbc_error() );
    
    		
    	// on teste le nombre de résultat
    
    		if(odbc_num_rows($req)>0)
    		{	// s'il est supérieur à 0 c'est que l'utilisateur existe
    			$data= odbc_fetch_array($req);
    			// on créé un tableau de session où on stocke les différentes informations
    			$_SESSION['Auth'] = array(
    			'login' => $login,
    			'pass' => $pass,
    			'statut' => $data['statut']);
    					
    //on teste si il est admin ou non et en fonction de cela on le redirige					
    			if($_SESSION['Auth']['statut'] == 'admin')
    			{
    				header('Location:pageprivee.php');	
    			}
    			else
    			{
    				header('Location:pagepublique.php');
    			}
    		}
    		
    }
    
    [....]
    
    <form action="index.php" method="post">
    
    <h4> Merci d'entrez vos identifiants afin d'accéder au gestionnaire  </h4>
    							   Login: <input type="text" name="login" value=""><br>
    							   Mot de passe: <input type="password" name="pass" value=""><br>
    
    <p>
    <input type="submit" value="Se connecter">
    <input name="retour" type="button" value="Retour" onClick="history.go(-1)">
    </p>
    </form>
    Et comment se compose la page auth :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    <?php
    
    
    	Class Auth{
    		static function isLogged()
    		{
    			if(isset($_SESSION['Auth']) && isset($_SESSION['Auth']['login']) && isset($_SESSION['Auth']['pass']) )
    			{	
    				extract($_SESSION['Auth']);
    					$con = odbc_connect("geststockmazars","","");
    				$sql = " SELECT id from users where login='$login' and pass='$pass'";
    				$req = odbc_do($con, $sql)or die( odbc_error() );
    		
    				if(odbc_num_rows($req)>0)
    				{
    					return true;
    				}
    				else
    				{
    					return false;
    				}
    	        }
    			else
    			{
    				return false;
    			}
    		}
    		
    		static function isAdmin()
    			{
    				if(isset($_SESSION['Auth']) && isset($_SESSION['Auth']['login']) && isset($_SESSION['Auth']['pass']) )
    				{
    					extract($_SESSION['Auth']);
    					$con = odbc_connect("geststockmazars","","");
    					$sql = " SELECT statut from users where login='$login' and pass='$pass'";
    					$req = odbc_do($con, $sql)or die( odbc_error() );
    					
    					if($req == 'admin')
    					{
    						return true;
    					}
    					else
    					{
    						return false;
    					}
    				}
    				else
    				{
    					return false;
    				}
    			}
    			
    	}
    
    ?>
    CHOSE IMPORTANTE A NOTER ! Si je change la partie en orange par :
    if($req = 'admin')

    Je n'ai plus ce problème de redirection mais ça ne résoud pas mon problème

    Le problème que j'ai est que lorsque je me connecte avec l'utilisateur ayant les droits d'admin je suis automatiquement redirigé vers la page indexdejalog.php (cf partie en couleur) alors que normalement l'admin n'est pas encore logué vu que la mise en place de auth se fait dans la boucle après.

    Je n'ai en revanche pas de problèmes pour la partie membre qui est bien redirigé vers la bonne page.

    COmment faire ?



    --> De plus, j'ai aussi un problème lors de l'affichage de menu, dans les pages communes aux deux niveaux de session, en fonction de si la personne loguée est membre ou admin.
    Je n'arrive pas à afficher le menu que je souhaite.
    VOilà un exemple d'une partie d'une age :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	if(Auth::isAdmin())  
    		{
     
    			include("menuhautprivee.php");
     
    		}
    		else
    		{
     
    			include("menuhautpublic.php");
     
    		}
    Je teste qui est connecté grâce à ma fonction isAdmin et j'affiche en conséquence.

    Conclusion : il semble y avoir un problème avec ma fonction isAdmin.

    Merci d'avance !!!

  2. #2
    Membre émérite

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Par défaut
    Que contient $req in-fine ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 196
    Par défaut
    Il devrait contenir soit admin soit membre vu que je récupère le statut (soit membre soit admin) en fonction du login et mot de passe.
    Comment vérifier ça ? Je sais que var_dump existe mais y a-t-il une autre solution ?

  4. #4
    Membre émérite

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Par défaut
    Justement, il ne faut savoir ce qu'il faudrait qu'il y ait mais ce qui passe réellement.

    echo, var_dump, log ou envoi par mail... Peu importe la méthode tant que vous arrivez à trouver !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 196
    Par défaut
    J'ai fait : var_dump($req);


    resource(5, odbc result)

    EDIT :
    j'ai donc testé en mettant $req == 5 (c'est quand je suis connecté avec le compte admin, si c'est le compte membre ça renvoi 6. Mais pourquoi ça me renvoi un chiffre et non pas le nom du statut comme je le demandais dans la requête ?)

    Cependant je ne suis plus redirigé vers la page qui me dit que je suis déjà connecté mais les autres pages ne fonctionnent toujours pas.
    EDIT : C'est bon j'ai résolu il fallait faire un tableau $data.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 14/02/2012, 15h04
  2. [Hudson] Problème de droits utilisateur
    Par Anthony14 dans le forum Intégration Continue
    Réponses: 4
    Dernier message: 20/04/2009, 11h42
  3. Réponses: 0
    Dernier message: 06/03/2009, 19h26
  4. Réponses: 13
    Dernier message: 08/10/2008, 16h16
  5. [compte utilisateur] problème de droit
    Par moulefrite dans le forum Windows XP
    Réponses: 1
    Dernier message: 22/03/2007, 15h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo