Page 1 sur 1

Login et création de session

Posté : 03 juil. 2019, 15:25
par BlitzMX
Salut tout le monde.

Je continue mon projet et me voila face a une nouvelle difficulté.
Le formulaire de registre étant fait, je me vois maintenant dans le besoin de comparer les infos introduites dans le formulaire login avec les infos déjà enregistrer dans la base de donnée pour ensuite crée une session afin de charger les info de session a chaque changement de page et ainsi maintenir l'utilisateur actif tant qu'il ne fait pas log-off.

J'ai mon code de base pour la vérification mais je sais pas comment crée la session.

Ou puis-je trouver les info?

Quelqu'un peut'il me donnée un exemple de comment crée une session et la relire?

<?php

require "../config.php";

// DEFINE DATABASE CONNECTION - PDO
try {

    $bdd = new PDO('mysql:host=localhost;dbname=' . $Database_Name, $Database_User, $Database_Password);

} catch (\Throwable $e) {

    die('Erreur : ' . $e->getMessage());

}


if ($_SERVER['REQUEST_METHOD'] == "POST" and isset($_POST["email"])) {

    $email = $_POST["email"];
    $password = password_hash($_POST["password"], PASSWORD_DEFAULT);

   
    try {
     
        $req = $bdd->prepare("SELECT * FROM users WHERE email = '$email' AND psw = '$password' ");
        $req->execute();

    } catch (\Throwable $th) {

    }



    header('Location: ../index.php?action=acces_admin');

    exit();

}

Merci

Re: Login et création de session

Posté : 03 juil. 2019, 15:42
par or 1
voir https://www.php.net/manual/fr/session.e ... .basic.php

mais avant il faut compléter :
$req = $bdd->prepare("SELECT * FROM users WHERE email = '$email' AND psw = '$password' ");
$req->execute();
pour savoir ce que retourne cette requête (qu'il serait bon de sécuriser).

Re: Login et création de session

Posté : 03 juil. 2019, 15:46
par BlitzMX
J'en suis ici:



 $email = $_POST["email"];
    $password = password_hash($_POST["password"], PASSWORD_DEFAULT);

    // FIND USER WITH EMAIL AND HASH PASSWORD
    try {
        // TODO ...
        $req = $bdd->prepare("SELECT * FROM users WHERE email = '$email' AND psw = '$password' ");
        $req->execute();
        $result = $req->fetchall();

        foreach ($result as $current_result) {         
            
            $prenom = $current_result["prenom"];
            $nom = $current_result["nom"];
            $email = $current_result["email"];
            $date_creation = $current_result["date_creation"];
            
        }

    } catch (\Throwable $th) {

    }


Et j'utilise: password_hash($_POST["password"], PASSWORD_DEFAULT)

Re: Login et création de session

Posté : 03 juil. 2019, 15:47
par BlitzMX
sécuriser? quoi? comment?

Re: Login et création de session

Posté : 03 juil. 2019, 16:02
par BlitzMX
C'est correcte comme ça ?
j'ai besoin des IFs ?

Merci

// FIND USER WITH EMAIL AND HASH PASSWORD
    try {
        // TODO ...
        $req = $bdd->prepare("SELECT * FROM users WHERE email = '$email' AND psw = '$password' ");
        $req->execute();
        $result = $req->fetchall();

        foreach ($result as $current_result) {

            $prenom = $current_result["prenom"];
            $nom = $current_result["nom"];
            $email = $current_result["email"];
            $date_creation = $current_result["date_creation"];

        }

        session_start();

        if (isset($_SESSION['prenom'])) {
            $_SESSION['prenom'] = $prenom;
        } else {
            $_SESSION['prenom'] = 0;
        }

        if (isset($_SESSION['nom'])) {
            $_SESSION['nom'] = $prenom;
        } else {
            $_SESSION['nom'] = 0;
        }

        if (isset($_SESSION['email'])) {
            $_SESSION['email'] = $prenom;
        } else {
            $_SESSION['email'] = 0;
        }

        if (isset($_SESSION['date_creation'])) {
            $_SESSION['date_creation'] = $prenom;
        } else {
            $_SESSION['date_creation'] = 0;
        }

    } catch (\Throwable $th) {

    }


Re: Login et création de session

Posté : 03 juil. 2019, 16:33
par BlitzMX
Ça marche pas, quelqu'un peux regarder ?



if ($_SERVER['REQUEST_METHOD'] == "POST" and isset($_POST["email"])) {

    $email = $_POST["email"];
    $password = password_hash($_POST["password"], PASSWORD_DEFAULT);

    // FIND USER WITH EMAIL AND HASH PASSWORD
    try {
        // TODO ...
        $req = $bdd->prepare("SELECT * FROM users WHERE email = '$email' AND psw = '$password' ");
        $req->execute();
        $result = $req->fetchall();

        foreach ($result as $current_result) {

            /*
            $current_result["prenom"];
            $current_result["nom"];
            $current_result["email"];
            $current_result["date_creation"];
             */

            if ($email = $current_result["email"] & $password = $current_result["psw"]) {

                session_start();

                if (isset($_SESSION['prenom'])) {
                    $_SESSION['prenom'] = $prenom;
                } else {
                    $_SESSION['prenom'] = 0;
                }

                if (isset($_SESSION['nom'])) {
                    $_SESSION['nom'] = $prenom;
                } else {
                    $_SESSION['nom'] = 0;
                }

                if (isset($_SESSION['email'])) {
                    $_SESSION['email'] = $prenom;
                } else {
                    $_SESSION['email'] = 0;
                }

                if (isset($_SESSION['date_creation'])) {
                    $_SESSION['date_creation'] = $prenom;
                } else {
                    $_SESSION['date_creation'] = 0;
                }

                header('Location: ../index.php?action=acces_admin');

            }

        }

    } catch (\Throwable $th) {

    }

    // Compare hash password in database with login database

    // IF OK - Create PHP Session

    // $psw = password_hash($_POST["psw"], PASSWORD_DEFAULT);
    // $psw = $_POST["psw-repeat"];
    // $date_creation = "NOW()";
    // PREPARE QUERY - use prepare pour les accents sur les lettres
    // $req = $bdd->prepare("INSERT INTO users(prenom, nom, email, psw, date_creation ) values (?, ?, ?, ?, NOW()) ");
    // $req->execute(array($prenom, $nom, $email, $psw ));

    header('Location: ../index.php?action=login');

    exit();

}