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 :

système authentification en MVC


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Mars 2021
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mars 2021
    Messages : 206
    Par défaut système authentification en MVC
    Bonjour,
    Je fais encore appel à vous pour mon petit projet. Je trouve très compliqué de mettre en place l'authentification connexion etc. peut-être parce que je débute... et ma logique doit être désastreuse
    Je pensais dans mon model Utilisateur :
    créer une fonction est_connecte pour détecter si l'utilisateur est connecté sinon ouvrir une session et mettre dans la session le login :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     function est_connecte ($identifiant) {
            //si la session est active ou non
            if(session_status === PHP_SESSION_NONE) {
                session_start();
                $_SESSION['login'] = $identifiant;
            }
        }
    puis créer une methode de connexion :
    - faire une première requête pour comparer le login puis une deuxieme pour le mot de passe mais je ne sais pas trop comment la mettre en place et ou placer :password, d'ailleur j'ai une erreur password indefini...
    - puis pour finir faire appel à la methode est_connecte pour faire si besoin le session_start() et rediriger vers accueil.php ou autre page.
    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
    function connexion($identifiant, $password) {
            //control login
            if(is_string($identifiant) && is_string($password) && !empty($identifiant) && !empty(password)) {
                $req=$this->bdd->prepare("select id_utilis, login, password from utilisateur 
                    where utilisateur.login = :identifiant");
                    $req->bindParam(':identifiant', $identifiant);
                    $req->bindParam(':password', $password);
                    $req->execute();
                    $count = $req->rowCount();
                    $resultat = $req->fetchAll(PDO::FETCH_ASSOC);
                    var_dump($count);
                if($count===1) {
                    //Vérification du mot de passe avec password_verify
                    if(password_verify($password, resultat["password"])) {
                        est_connecte($identifiant);
                        header('location: ../view/vueRecettes.php');
                    }
                }
            } else {
                echo "erreur";
            } 
        }
    mon controller
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function connexion($identifiant, $password) {
                return $this->modelUtilisateur->connexion($identifiant, $password);
           }
    et pour finir si besoin ma page avec le formulaire de connexion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php 
    require '../controller/controllerUtilisateur.php';
    $utilisateurController = new ControllerUtilisateur();
     
     
    if(isset ($_POST['identifiant'])) {
        $utilisateur = $utilisateurController->connexion(
            $identifiant = trim(strip_tags($_POST['identifiant'])),
            $password = trim(strip_tags($_POST['password']))
        );
    }
     
    ?>
    Je veux créer quelques chose de basique déjà pour apprendre et comprendre, Est ce que je suis sur la bonne voie ? comment construire ma requête ?
    merci de vos conseils et aide.

  2. #2
    Membre éclairé Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 666
    Par défaut
    Bonjour assais comme ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <form class="form-signin" action="traitement.php" method="post" >
      <input type="email" name="email" id="floatingInput"  placeholder="Entrer votre email" required autofocus>
    
       <input type="password" name="password" id="floatingPassword"  placeholder="Password" required >
      <button class="w-100 btn btn-lg btn-primary" type="submit">S'identifier</button>
    </form>
    Puis traitement.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
    <?php session_start();
    
    $email = htmlspecialchars( $_POST['email']) ;
    $password = htmlspecialchars( $_POST['password']);
                 
        $mysqli = new mysqli('127.0.0.1', 'root', '', 'database');
    
        $sql = "SELECT password , pseudo FROM membre WHERE email = '".$email."'";
    
    
    
      if ($data = mysqli_fetch_array($result))
      {
          $pass = $data['password'];
    
          if (password_verify($password , $pass)) {
          //traitement des authorisation
    
         }
          
    
                mysqli_close($mysqli);
                
                $result->close();
    }

  3. #3
    Membre confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Mars 2021
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mars 2021
    Messages : 206
    Par défaut
    Bonjour,
    merci pour vos conseils et suggestions, donc faire deux fonctions dans mon modelUtilisateur n'est pas une bonne idée ? concernant la requête en me demande de faire du PDO je suppose que je dois faire une requête préparée ?
    merci désolé pour toutes ces questions.

  4. #4
    Membre éclairé Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 666
    Par défaut
    Oui faire une requête préparé pdo est judicieux. Il faut récupérer les données transmises via la requête.
    Le formulaire te montre comment utiliser le $_POST['password'].

  5. #5
    Membre confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Mars 2021
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mars 2021
    Messages : 206
    Par défaut
    merci le souci c'est que je sais pas trop comment construire cette requête. Qu'on pensez-vous de ma requête est mes conditions ?

  6. #6
    Membre éclairé Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 666
    Par défaut
    Tapes sur Google
    PDO et select champs obtenues la requête PDO.
    Désolé je te donnerais le code plus tard
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    $sql =  'SELECT name, color, calories FROM fruit ORDER BY name';
    foreach  ($conn->query($sql) as $row) {
        print $row['name'] . "\t";
        print  $row['color'] . "\t";
        print $row['calories'] . "\n";
    }
    ?>

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

Discussions similaires

  1. Système authentification persistant.
    Par defacta dans le forum Langage
    Réponses: 9
    Dernier message: 16/05/2011, 18h00
  2. Réponses: 3
    Dernier message: 26/01/2010, 21h31
  3. Mis en place d'un système Authentification forte
    Par moi95 dans le forum Sécurité
    Réponses: 0
    Dernier message: 18/03/2009, 10h31
  4. [Système] Problème authentification site
    Par bilowlex dans le forum Langage
    Réponses: 3
    Dernier message: 17/02/2007, 08h52
  5. [Système] Aide pour authentification
    Par Pushka07 dans le forum Langage
    Réponses: 40
    Dernier message: 16/08/2006, 11h34

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