database; $res = $this->conn->prepare($reqInitDb); $res->execute(); } // Sélection de la DB private function select_db() { $reqSelectDb = "USE ".$this->database; $res = $this->conn->prepare($reqSelectDb); $res->execute(); } // Création des tables si elles n'existent pas private function create_table() { // userAccount $reqInitUserAccount = $this->createTableUserAccount; $res = $this->conn->prepare($reqInitUserAccount); $res->execute(); // userInfo $reqInitUserInfo = $this->createTableUserInfo; $res = $this->conn->prepare($reqInitUserInfo); $res->execute(); // jobCategory $reqInitJobCategory = $this->createTableJobCategory; $res = $this->conn->prepare($reqInitJobCategory); $res->execute(); // userJob $reqInitUserJob = $this->createTableUserJob; $res = $this->conn->prepare($reqInitUserJob); $res->execute(); // mission $reqInitMission = $this->createTableMission; $res = $this->conn->prepare($reqInitMission); $res->execute(); } // Déclenche les méthodes pour créer la BDD private function init() { $this->create_db(); $this->select_db(); $this->create_table(); } // Chiffre la data reçue // https://www.delftstack.com/fr/howto/php/php-string-concatenation/ final public function crypt_pass($pass) { // On génère une chaine de caractère aléatoire de 16 bytes en supprimant les caractères spéciaux de base64. $salt = substr(str_replace("+", ".", base64_encode(random_bytes(32))), 0, 16); // On configure pour avoir du SHA512 avec 10 000 tours (protection contre du bruteforce ex:hashcat) $hash = crypt($pass, '$6'.'$rounds=10000'.'$'.$salt.'$'); return $hash; } // Prépare la requète pour mitiger (se protéger) les injections SQL et // initialise si nécessaire la BDD à chaque requète final public function exec_cmd($req, $arg) { $this->init(); $res = $this->conn->prepare($req); $res->execute($arg); return $res; } // Vérifie si l'email existe dans la table userAccount de la BDD final public function check_exist_email($email) { $reqCheckEmailExist = "SELECT EXISTS(SELECT * FROM ".$this->tableUserAccount." WHERE email = ?)"; $data = $this->exec_cmd($reqCheckEmailExist, array($email))->fetchAll(PDO::FETCH_NUM); // Retourne 1 si existe, sinon 0 return $data[0][0]; } // Vérifie si l'id est un consultant dans la table userAccount de la BDD final public function check_exist_pro($id) { $reqCheckExistConsultant = "SELECT EXISTS(SELECT * FROM ".$this->tableUserAccount." WHERE id = ? AND isPro = '1')"; $data = $this->exec_cmd($reqCheckExistConsultant, array($id))->fetchAll(PDO::FETCH_NUM); // Retourne 1 si existe, sinon 0 return $data[0][0]; } // Constructeur, fonction "auto" déclenchée à l'instanciation final public function __construct() { // Essaie de se connecter a la BDD if ($this->debug) { $this->conn = new PDO("mysql:host=".$this->host, $this->user, $this->pass, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); } else { $this->conn = new PDO("mysql:host=".$this->host, $this->user, $this->pass, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT)); } } } ?>