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 : 25
    Localisation : Maroc

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

    Informations forums :
    Inscription : Mars 2017
    Messages : 1
    Points : 1
    Points
    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 : 58
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    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.

  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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    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.

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