Login et création de session

Eléphanteau du PHP | 25 Messages

03 juil. 2019, 15:25

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

Mammouth du PHP | 2703 Messages

03 juil. 2019, 15:42

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).

Eléphanteau du PHP | 25 Messages

03 juil. 2019, 15:46

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)

Eléphanteau du PHP | 25 Messages

03 juil. 2019, 15:47

sécuriser? quoi? comment?

Eléphanteau du PHP | 25 Messages

03 juil. 2019, 16:02

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) {

    }


Eléphanteau du PHP | 25 Messages

03 juil. 2019, 16:33

Ç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();

}