probleme dans mon code structure mvc

inscription/connexion base de donnée

a marqué ce sujet comme résolu.

inscriptionController.php

<?php include('models/ConnexionDB.php'); // Fichier PHP contenant la connexion à votre BDD // S'il y a une session alors on ne retourne plus sur cette page if (isset($_SESSION['id'])){ header('Location:?accueil.php'); exit; } // Si la variable "$_Post" contient des informations alors on les traitres if(!empty($_POST)){ extract($_POST); $valid = true; // On se place sur le bon formulaire grâce au "name" de la balise "input" if (isset($_POST['inscription'])){ $nom = htmlentities(trim($nom)); // On récupère le nom $prenom = htmlentities(trim($prenom)); // on récupère le prénom $mail = htmlentities(strtolower(trim($mail))); // On récupère le mail $mdp = trim($mdp); // On récupère le mot de passe $confmdp = trim($confmdp); // On récupère la confirmation du mot de passe // Vérification du nom if(empty($nom)){ $valid = false; $er_nom = ("Le nom d' utilisateur ne peut pas être vide"); } // Vérification du prénom if(empty($prenom)){ $valid = false; $er_prenom = ("Le prenom d' utilisateur ne peut pas être vide"); } // Vérification du mail if(empty($mail)){ $valid = false; $er_mail = "Le mail ne peut pas être vide"; // On vérifit que le mail est dans le bon format }elseif(!preg_match("/^[a-z0-9\-_.]+@[a-z]+\.[a-z]{2,3}$/i", $mail)){ $valid = false; $er_mail = "Le mail n'est pas valide"; }else{ // On vérifit que le mail est disponible $req_mail = $DB->query("SELECT mail FROM utilisateur WHERE mail = ?", array($mail)); $req_mail = $req_mail->fetch(); if ($req_mail['mail'] <> ""){ $valid = false; $er_mail = "Ce mail existe déjà"; } } // Vérification du mot de passe if(empty($mdp)) { $valid = false; $er_mdp = "Le mot de passe ne peut pas être vide"; }elseif($mdp != $confmdp){ $valid = false; $er_mdp = "La confirmation du mot de passe ne correspond pas"; } // Si toutes les conditions sont remplies alors on fait le traitement if($valid){ $mdp = crypt($mdp, "$6$rounds=5000$macleapersonnaliseretagardersecret$"); $date_creation_compte = date('Y-m-d H:i:s'); // On insert nos données dans la table utilisateur $DB->insert("INSERT INTO utilisateur (nom, prenom, mail, mdp, date_creation_compte) VALUES (?, ?, ?, ?, ?)", array($nom, $prenom, $mail, $mdp, $date_creation_compte)); header('Location:?accueil.php'); exit; } } } ?>

<?php include('models/ConnexionDB.php'); // Fichier PHP contenant la connexion à votre BDD // S'il y a une session alors on ne retourne plus sur cette page if (isset($_SESSION['id'])){ header('Location:?section=accueil'); exit; } // Si la variable "$_Post" contient des informations alors on les traitres if(!empty($_POST)){ extract($_POST); $valid = true; // On se place sur le bon formulaire grâce au "name" de la balise "input" if (isset($_POST['inscription'])){ $nom  = htmlentities(trim($nom)); // On récupère le nom $prenom = htmlentities(trim($prenom)); // on récupère le prénom $mail = htmlentities(strtolower(trim($mail))); // On récupère le mail $mdp = trim($mdp); // On récupère le mot de passe  $confmdp = trim($confmdp); //  On récupère la confirmation du mot de passe //  Vérification du nom if(empty($nom)){ $valid = false; $er_nom = ("Le nom d' utilisateur ne peut pas être vide"); }        //  Vérification du prénom if(empty($prenom)){ $valid = false; $er_prenom = ("Le prenom d' utilisateur ne peut pas être vide"); }        // Vérification du mail if(empty($mail)){ $valid = false; $er_mail = "Le mail ne peut pas être vide"; // On vérifit que le mail est dans le bon format }elseif(!preg_match("/^[a-z0-9\-_.]+@[a-z]+\.[a-z]{2,3}$/i", $mail)){ $valid = false; $er_mail = "Le mail n'est pas valide"; }else{ // On vérifit que le mail est disponible $req_mail = $DB->query("SELECT mail FROM utilisateur WHERE mail = ?", array($mail)); $req_mail = $req_mail->fetch(); if ($req_mail['mail'] <> ""){ $valid = false; $er_mail = "Ce mail existe déjà"; } } // Vérification du mot de passe if(empty($mdp)) { $valid = false; $er_mdp = "Le mot de passe ne peut pas être vide"; }elseif($mdp != $confmdp){ $valid = false; $er_mdp = "La confirmation du mot de passe ne correspond pas";             }             // Si toutes les conditions sont remplies alors on fait le traitement             if($valid){ $mdp = crypt($mdp, "$6$rounds=5000$macleapersonnaliseretagardersecret$"); $date_creation_compte = date('Y-m-d H:i:s'); // On insert nos données dans la table utilisateur $DB->insert("INSERT INTO utilisateur (nom, prenom, mail, mdp, date_creation_compte) VALUES                      (?, ?, ?, ?, ?)",                      array($nom, $prenom, $mail, $mdp, $date_creation_compte));                 header('Location:?section=accueil');                 exit;             }         } include("views/page/connexion.php");     } ?>

inscriptionController.php

<?php include('models/ConnexionDB.php'); // Fichier PHP contenant la connexion à votre BDD // S'il y a une session alors on ne retourne plus sur cette page if (isset($_SESSION['id'])){ header('Location:?section=accueil'); exit; } // Si la variable "$_Post" contient des informations alors on les traitres if(!empty($_POST)){ extract($_POST); $valid = true; // On se place sur le bon formulaire grâce au "name" de la balise "input" if (isset($_POST['inscription'])){ $nom  = htmlentities(trim($nom)); // On récupère le nom $prenom = htmlentities(trim($prenom)); // on récupère le prénom $mail = htmlentities(strtolower(trim($mail))); // On récupère le mail $mdp = trim($mdp); // On récupère le mot de passe  $confmdp = trim($confmdp); //  On récupère la confirmation du mot de passe //  Vérification du nom if(empty($nom)){ $valid = false; $er_nom = ("Le nom d' utilisateur ne peut pas être vide"); }        //  Vérification du prénom if(empty($prenom)){ $valid = false; $er_prenom = ("Le prenom d' utilisateur ne peut pas être vide"); }        // Vérification du mail if(empty($mail)){ $valid = false; $er_mail = "Le mail ne peut pas être vide"; // On vérifit que le mail est dans le bon format }elseif(!preg_match("/^[a-z0-9\-_.]+@[a-z]+\.[a-z]{2,3}$/i", $mail)){ $valid = false; $er_mail = "Le mail n'est pas valide"; }else{ // On vérifit que le mail est disponible $req_mail = $DB->query("SELECT mail FROM utilisateur WHERE mail = ?", array($mail)); $req_mail = $req_mail->fetch(); if ($req_mail['mail'] <> ""){ $valid = false; $er_mail = "Ce mail existe déjà"; } } // Vérification du mot de passe if(empty($mdp)) { $valid = false; $er_mdp = "Le mot de passe ne peut pas être vide"; }elseif($mdp != $confmdp){ $valid = false; $er_mdp = "La confirmation du mot de passe ne correspond pas";             }             // Si toutes les conditions sont remplies alors on fait le traitement             if($valid){ $mdp = crypt($mdp, "$6$rounds=5000$macleapersonnaliseretagardersecret$"); $date_creation_compte = date('Y-m-d H:i:s'); // On insert nos données dans la table utilisateur $DB->insert("INSERT INTO utilisateur (nom, prenom, mail, mdp, date_creation_compte) VALUES                      (?, ?, ?, ?, ?)",                      array($nom, $prenom, $mail, $mdp, $date_creation_compte));                 header('Location:?section=accueil');                 exit;             }         } include("views/page/connexion.php");     } ?>

connexion a base de donnée

<?php // Déclaration d'une nouvelle classe class ConnexionDB { private $host = 'localhost'; // nom de l'host private $name = 'projet'; // nom de la base de donnée private $user = 'root'; private $pass = ''; // mot de passe (il faudra peut-être mettre '' sous Windows) //private $pass = ''; // Ne rien mettre si on est sous windows private $connexion; function __construct($host = null, $name = null, $user = null, $pass = null){ if($host != null){ $this->host = $host; $this->name = $name; $this->user = $user; $this->pass = $pass; } try{ $this->connexion = new PDO('mysql:host=' . $this->host . ';dbname=' . $this->name, $this->user, $this->pass, array(PDO::MYSQL_ATTR_INIT_COMMAND =>'SET NAMES UTF8', PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING)); }catch (PDOException $e){ echo 'Erreur : Impossible de se connecter à la BDD !'; die(); } } //L'utilité de la fonction query va vous permettre de gagner un gain de vitesse lorsque vous allez écrire une requête SQLafin d'interroger votre serveur. //La fonction query est à utiliser de préférence avec la requête SELECT. public function query($sql, $data = array()){ $req = $this->connexion->prepare($sql); $req->execute($data); return $req; } //Ci-dessous je vous montre comment utiliser cette fonction de plusieurs façon. // Première méthode //$req = $DB->query("SELECT * FROM nom_table"); //$req = $req->fetch(); // Deuxième méthode //$req = $DB->query("SELECT * FROM nom_table WHERE id = ?", //array(1)); //$req = $req->fetch(); // Troisième méthode // $req = $DB->query("SELECT * FROM nom_table WHERE id = :id", // array('id' => 1)); // $req = $req->fetch(); //La fonction insert est à utiliser de préférence avec les requêtes INSERT, UPDATE et DELETE. public function insert($sql, $data = array()){ $req = $this->connexion->prepare($sql); $req->execute($data); } //Ci-dessous je vous montre comment utiliser cette fonction de plusieurs façon. // <?php// Première méthode avec INSERT // $DB->insert("INSERT INTO nom_table (prenom, nom, age) VALUES (?, ?, ?)", // array("jean", "dupont", 20)); // // Deuxième méthode avec UPDATE // $DB->insert("UPDATE nom_talbe SET prenom = ?, nom = ?, age = ? WHERE id = ?", // array("michel", "durant", 22, 1)); // // Troisième méthode avec DELETE // $DB->query("DELETE FROM nom_table WHERE id = ?", // array(1)); // // Faire une connexion à votre fonction } $DB = new ConnexionDB(); ?>

Quelle est ta question ? Le code c’est sympa (correctement formaté c’est mieux) mais je ne comprends pas ce que tu aimerais savoir (et je pense ne pas être le seul).

N’hésite pas à lire ce guide sur comment poser une question efficacement afin qu’on puisse t’aider au mieux :) .


En parcourant tout de même le code, j’ai repéré l’usage de la fonction PHP crypt pour hasher un mot de passe. Son usage est aujourd’hui découragé : je te recommande vivement d’utiliser password_hash (et son acolyte password_verify1), qui se basent sur bcrypt et qui sont beaucoup plus évolutifs et sécurisés (ne serais-ce car ils sont conçus pour hasher des mots de passe, ce qu’on ne fait pas de la même façon qu’en hashant autre chose2.


  1. Et éventuellement password_needs_rehash si tu veux y aller à fond et re-hasher régulièrement les mots de passe pour qu’ils restent sûrs avec le temps, mais rien que password_hash et password_verify ce sera déjà très bien.
  2. Hasher un mot de passe, ça doit être lent (sisi), pour décourager les attaques par force brute, et salé, pour la même raison. Les autres besoins de hash n’ont pas ces contraintes, et ont même les contraintes inverses : quand on hash pour vérifier l’intégrité d’un fichier, on veut que ce soit le plus rapide possible, car on veut pouvoir vérifier l’intégrité d’énormes fichiers très rapidement.
+3 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte