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

PHP & Base de données Discussion :

Déconnecter un admin lorsqu'on change de navigateur


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2020
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2020
    Messages : 119
    Par défaut Déconnecter un admin lorsqu'on change de navigateur
    Bonjour,

    Voici l'URL lorsque je suis sur Google Chrome (faux site, juste pour l'exemple) => URL: http://site-web.fr/index.php?action=admin . Ceci est ma page administrateur.

    Lorsque je copie cette URL dans Firefox par exemple, j'atteris toujours sur ma page admin (ce qui semble normal vu le paramètre de mon url...)

    Mais pour une question de sécurité j'aimerais pouvoir déconnecter l'admin si je fais cette opération. Donc lorsque je copie cet URL dans un autre navigateur , je voudrais par exemple que l'admin soit déconnecté ou la session expiré. Je ne sais pas comment faire.

    Je montre le code que j'ai réalisé pour la connexion/deconnexion admin

    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
     
    <?php
    require_once('Model/userManager.php');
    require_once('Model/PostManager.php');
    require_once('Model/CommentManager.php');
     
    function connect($pseudo, $pass) {  //Connexion
        //var_dump($pseudo);
        $connexion = new Users();
        $connexion->setPseudo($pseudo);
        //var_dump($connexion);
        $postManager = new PostManager();
        $listposts =  $postManager->getPosts(); //Cette ligne sert à récupérer les données de posts
     
        $connect = new Members();
        $login = $connect->connexion($connexion);
     
     
        $isPasswordCorrect = password_verify($pass, $login['pass']);  
        if (!$login) {
            print 'Mauvais identifiant ou mot de passe !';
        } else {
            if (!$isPasswordCorrect) {
                 print "Mauvais identifiant ou mot de passe";
            } else {
                //print "bienvenue, " .$_SESSION['username'];
                $_SESSION['loggedin'] = true;
                //var_dump($_SESSION['loggedin']);
                $_SESSION['username'] = $_POST['username'];
                $_SESSION['user_role'] = $login['user_role'];
                if ($_SESSION['user_role'] == 'user') {     
                    header('Location:index.php?action=listPosts');
                } else{
                    header('Location:index.php?action=admin');
                }
            }
        }
    }
     
    function logOut() { //Deconnexion
     
        $_SESSION = array();
        session_destroy();
        header('Location: index.php?action=listPosts');
    }
    HELP

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 652
    Par défaut
    Citation Envoyé par Lunesti Voir le message
    (ce qui semble normal vu le paramètre de mon url...)
    ce n'est pas le comportement normal.
    d'habitude le fait de se connecter va créer un cookie dans le navigateur. donc normalement si vous utilisez un autre navigateur, le système d'accès va remarquer que le cookie n'est pas là et refuser l'accès.

    quel code utilisez vous pour vérifier l'authentification dans les pages d'administration ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2020
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2020
    Messages : 119
    Par défaut
    Oui c'est exactement ce que je me dis. si le navigateur n'a aucun cookie il ne peut pas être connecté.


    mon routeur :

    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
        //Connexion
        elseif ($_GET['action'] == 'user_connected') {
            if (isset($_POST['username']) && isset($_POST['userpass'])) {
                if (!empty($_POST['username']) && !empty($_POST['userpass'])) {
                    connectUser($_POST['username'], $_POST['userpass']);
                } else {
                    print "Au moins un des champs est vide !"; 
                }
            } else {
                print "Les champs username et userpass n'existent pas";
            }
        }
     
            elseif ($_GET['action'] == 'admin_connected') {
                if (isset($_POST['username']) && isset($_POST['userpass'])) {
                    if (!empty($_POST['username']) && !empty($_POST['userpass'])) {
                        connectAdmin($_POST['username'], $_POST['userpass']);
                    } else {
                        print "Au moins un des champs est vide !"; 
                    }
                } else {
                    print "Les champs username et userpass n'existent pas";
                }
     
     
        //Deconnexion
        elseif($_GET['action'] == 'disconnected') {
           logOut();
        }
    le controleur :


    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
     
     
    //Controle de connexion utilisateur
    function connectUser($pseudo, $pass) {  //Connexion
        //var_dump($pseudo);
        $connexion = new Users();
        $connexion->setPseudo($pseudo);
        //var_dump($connexion);
        $postManager = new PostManager();
        $listposts =  $postManager->getPosts(); //Cette ligne sert à récupérer les données de posts
     
        $connect = new Members();
        $login = $connect->connexion($connexion);
     
     
        $isPasswordCorrect = password_verify($pass, $login['pass']);  
        if (!$login) {
            print 'Mauvais identifiant ou mot de passe !';
        } else {
            if (!$isPasswordCorrect) {
                 print "Mauvais identifiant ou mot de passe";
            } else {
                $_SESSION['username'] = $_POST['username'];
                $_SESSION['user_role'] = $login['user_role'];
                if ($_SESSION['user_role'] == 'user') {
                    $_SESSION['loggedin'] = true;     
                    header('Location:index.php?action=listPosts');
                } else {
                    print "Si vous êtes un admin, veuillez utiliser votre espace dédié";
                }
            }
        }
    }
     
    //Controle de connexion admin
    function connectAdmin($pseudo, $pass) {
        $connexion = new Users();
        $connexion->setPseudo($pseudo);
        $postManager = new PostManager();
        $listposts =  $postManager->getPosts(); 
     
        $connect = new Members();
        $login = $connect->connexion($connexion);
     
     
        $isPasswordCorrect = password_verify($pass, $login['pass']);  
        if (!$login) {
            print 'Mauvais identifiant ou mot de passe !';
        } else {
            if (!$isPasswordCorrect) {
                 print "Mauvais identifiant ou mot de passe";
            } else {
                //print "bienvenue, " .$_SESSION['username'];
     
                //var_dump($_SESSION['loggedin']);
                $_SESSION['username'] = $_POST['username'];
                $_SESSION['user_role'] = $login['user_role'];
                if ($_SESSION['user_role'] == 'admin') {    
                    $_SESSION['loggedin'] = true; 
                    header('Location:index.php?action=admin');
                } else{
                    print "Vous n'êtes pas admin. Veuillez vous diriger vers le menu de connexion en haut du site pour vous connecter";
                }
            }
        }
    }
     
    function logOut() { //Deconnexion
     
        $_SESSION = array();
        session_destroy();
        header('Location: index.php?action=listPosts');
    }

    içi les fonctions permettant d'afficher connexionView et adminView

    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
    //Rediriger vers la page de connexion Admin
    function adminConnexion() {
        require('View/frontend/connexionAdminView.php');
    }
     
     
    //Rediriger vers la page Admin
    function adminPage() {
        $postManager = new PostManager();
        $posts = $postManager->getPosts();
        $commentManager = new CommentManager();
        $comments = $commentManager->getComments();
        $listReports = $commentManager->showReports();
        require('View/frontend/adminView.php');
    }

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/10/2013, 08h49
  2. Réponses: 0
    Dernier message: 11/07/2012, 12h56
  3. Réponses: 6
    Dernier message: 08/09/2011, 11h53
  4. impossiblité de voir le curseur lorsque je change de champ
    Par paolo2002 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 16/04/2008, 15h59
  5. [WPF] ListBox : evenement SelectionChanged se déclenche lorsque SelectedItemS change
    Par anisb dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 17/01/2008, 22h29

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