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 différenciation de connexion entre un simple utilisateur et un admin


Sujet :

Langage PHP

  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2017
    Messages : 1
    Par défaut Problème de différenciation de connexion entre un simple utilisateur et un admin
    salut tt le monde , je viens de réaliser une application de gestion des salles d'informatique en PHP , et j'ai un petit problème de différenciation de connexion entre un simple utilisateur et un admin.
    En effet, j'aimerai qu'un utilisateur x, lorsque celui-ci se connecte, arrive sur sa page "home.php", alors que l'admin quant à lui, lorsqu'il se connecte, arrive sur un autre page "home_admin.php.
    J'ai effectué différentes recherches sur l'inscription et la connexion d'un membre, enregistré dans une base de donnée. Mais je n'arrive pas à faire la différenciation entre un admin à qui j'ai un login spécial et un simple utilisateur. Le type de code est le suivant (il me semble l'avoir repris en partie de developpez.net) :
    voici le code : de la page de login.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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    <?php
    session_start();
    if((isset($_SESSION['id']) != "" )){
        header("Location : home.php");   
        exit();
    }
    include 'Dbconnect.php';
     
    if(isset($_POST['login'])) {
     
        if(isset($_POST['cnx']) && $_POST['cnx'] == "user"){
     
        $email =  $_POST['email'];
        $password =  $_POST['password'];
        $result = $con->query("SELECT * FROM users WHERE email = '" . $email. "' and password = '" . md5($password) . "' AND confirme=1");
     
        if ($row = $result->fetch()) {
           $_SESSION['id'] = $row['id'];
            $_SESSION['name'] = $row['name'];
            header("Location: home.php");
        } else {
            $errormsg = "Le mot de passe que vous avez indiqué n’est pas valable";
        }
        if(isset($_POST['souvenir'])){
            setcookie('email','$email',time()+356*24*3600,null,null,false,true);
          setcookie('password','$password',time()+356*24*3600,null,null,false,true);
     
        }
    }elseif (isset($_POST['cnx']) && $_POST['cnx'] == "admin") {
     
         $email =  $_POST['email'];
        $password =  $_POST['password'];
        $resultat = $con->query("SELECT * FROM users WHERE email = '" . $email. "' and password = '" . md5($password) . "' AND role = 'admin'");
     
        if ($row = $resultat->fetch()) {
            $_SESSION['id'] = $row['id'];
            $_SESSION['nom'] = $row['nom'];
            header("Location: home_admin.php");
      } else {
            $errormsg = "Le mot de passe que vous avez indiqué n’est pas valable";
        }
        if(isset($_POST['souvenir'])){
            setcookie('email','$email',time()+356*24*3600,null,null,false,true);
          setcookie('password','$password',time()+356*24*3600,null,null,false,true);
     
        }
      }
    }
     
    ?>
     
    <!doctype html>
    <html>
    <head>
     
    	<title>Se connecter!</title>
    	<meta content="width=device-width, initial-scale=1.0" name="viewport" >
        <link rel="stylesheet" href="css/bootstrap.min.css" type="text/css" /> 
        <link rel="stylesheet" href="css/bootstrap.css" type="text/css" /> 
     
        <link rel="stylesheet" type="text/css" href="stylee.css">
    </head>
     
    <body class="imag">
    <h2 id="titre">Gestion des Salle d'informatique</h2>
      <nav class="navbar navbar-default" role="navigation">
        <div class="container-fluid">
     
            <!-- menu items -->
            <div class="collapse navbar-collapse" id="navbar1">
                <ul class="nav navbar-nav navbar-right">
                    <li class="active"><a href="login.php">Se Connecter</a></li>
                    <li><a href="compte.php">S'inscrire</a></li>
                </ul>
            </div>
        </div>
    </nav>
     
    <div class="container">
        <div class="row" id="demo" style="margin-top: -35px;">
     
            <div class="col-md-4 col-md-offset-4 well">
                <form role="form" action="<?php $_SERVER['PHP_SELF']; ?>" method="post" name="loginform">
                    <fieldset>
                        <legend><img src="connexion.jpg" id="p"></legend>
     
                       <div class="form-group">
                            <label>Se Connecter en tant que :</label>
                            <select name= "cnx">
                                <option value="user">Utilisateur</option>
                                <option value="admin">Super Administrateur</option>
                            </select>
                        </div>       
     
                        <div class="form-group">
                            <label for="name">Email</label>
                            <input type="text" name="email" placeholder="Votre Email" required class="form-control" />
                        </div>                    
     
                        <div class="form-group">
                            <label for="name">Mot de Passe</label>
                            <input type="password" name="password" placeholder="Votre Mot de Passe" required class="form-control" />
                        </div>
     
                        <div class="form-group">
                            <input type="submit" name="login" value="Se Connecter" class="btn btn-primary" />
                            <input type="checkbox" name="souvenir">Se Souvenir de Moi       
     
                        </div>
                    </fieldset>
                </form>
                <span class="text-danger"><?php if (isset($errormsg)) { echo $errormsg; } ?></span>
            </div>
        </div>
        <div class="row">
            <div class="col-md-4 col-md-offset-4 text-center">    
            Nouveau utilisateur ? <a href="compte.php" style="color: blue;">S'inscrire ici</a>
            </div>
        </div>
    </div>
     
    <script src="js/bootstrap.js"></script>
    <script src="js/bootstrap.min.js"></script>
     
    </body>
    </html>

  2. #2
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    $con : cette variable n'est ni initialisée, ni affectée.
    Tu ne peux pas te connecter à la base par l'opération du saint esprit, pas même un dimanche.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Personnellement, ce que je ferais, c'est récupérer l'utilisateur à partir de son login/mot de passe, puis tester la valeur du champ qui indique si c'est un admin ou non avant de rediriger :
    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
    if (isset($_POST['login'])) {
        if (isset($_POST['cnx']) && $_POST['cnx'] == "user") {
            $email = $_POST['email'];
            $password = $_POST['password'];
            $result = $con->query("SELECT * FROM users WHERE email = '" . $email . "' and password = '" . md5($password) . "' ");
            if ($row = $result->fetch()) {
     
                // on a trouvé l'utilisateur, on vérifie ses droits
     
                switch ($row['role') {
                case 'admin':
     
                    // c'est un admin !!
     
                    $_SESSION['id'] = $row['id'];
                    $_SESSION['nom'] = $row['nom'];
                    header("Location: home_admin.php");
                    break;
     
                case 'user':
     
                    // c'est un utilisateur normal
     
                    $_SESSION['id'] = $row['id'];
                    $_SESSION['name'] = $row['name'];
                    header("Location: home.php");
                    break;
     
                default:
     
                    // euh... c'est autre chose ?!!
     
                    $errormsg = "Vous êtes qui au juste ?";
                    break;
                }
            }
            else {
                $errormsg = "Le mot de passe que vous avez indiqué n'est pas valable";
            }
     
            if (isset($_POST['souvenir'])) {
                setcookie('email', '$email', time() + 356 * 24 * 3600, null, null, false, true);
                setcookie('password', '$password', time() + 356 * 24 * 3600, null, null, false, true);
            }
        }
    }
    @Dendrite : je suppose que $con est défini dans le script ici : include 'Dbconnect.php';Remarques techniques au passage :
    Utiliser md5 pour le mot de passe n'est pas une bonne idée. A lire sur le sujet : Mots de passe sécurisés avec PHP 5.5.
    A priori, tu utilises PDO () mais ta requête n'est pas sécurisée. Utilise une requête préparée (en passant les paramètres) ou au moins la fonction quote.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/04/2011, 12h40
  2. Réponses: 14
    Dernier message: 17/08/2009, 18h40
  3. Problème de connexion entre msde et ebp
    Par cybernetique dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 02/06/2008, 13h18
  4. Problème de connexion entre WebParts "home made"
    Par pcr92 dans le forum SharePoint
    Réponses: 0
    Dernier message: 16/10/2007, 13h39
  5. Problème de connexion entre 3 pc
    Par larimoise dans le forum Administration
    Réponses: 7
    Dernier message: 24/03/2007, 18h34

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