diff options
| author | Debulois <quentin@debulois.fr> | 2022-03-09 19:37:55 +0100 |
|---|---|---|
| committer | Debulois <quentin@debulois.fr> | 2022-03-09 19:37:55 +0100 |
| commit | 497ce42637ebaad0c388d309d6b5bbf91db2dfa4 (patch) | |
| tree | 45844b0ad0d03559eeecf0171efed745900478de | |
| parent | 5ddf8de3691fde866c5a48b440cffa2990b2014c (diff) | |
Mise à jour des fonctions de la bdd avec le nouveau modèle, renommage des fichier pour plus de clarte et ajout des documents et infos
45 files changed, 517 insertions, 180 deletions
diff --git a/Database/dbmain.php b/Database/dbmain.php index 43e39ef..532bb7c 100644 --- a/Database/dbmain.php +++ b/Database/dbmain.php @@ -10,7 +10,7 @@ // protected: accesible depuis l'extérieur et donc via extend mais non modifiable // public: accessible et modifiable depuis l'extérieur // final: ne peut etre ré-écris (overload) -// + class DbMain { // Salt pour chiffrement private $salt = "cTKXHBoN3oxymlhNem2h"; @@ -19,54 +19,120 @@ class DbMain { private $host = "127.0.0.1"; private $user = "root"; private $pass = ""; + private $debug = True; // Déclaration des tables - private $database = "ExoPhp"; - // UserAccount, infos du compte nécessaire à la connection + private $database = "alphajob"; + // Timestamp auto si non renseigné - private $createTableUserAccount = "userAccount ( - id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, - email VARCHAR(128) NOT NULL, - password VARCHAR(128) NOT NULL, - tokenAutoLogin VARCHAR(128), - inscriptionDate TIMESTAMP NOT NULL, - isUser BOOL NOT NULL, - isConsultant BOOL NOT NULL, - isAdmin BOOL NOT NULL - )"; - // Infos complémentaires des utilisateur, liée à userAccount par userId à id - private $createTableUserInfo = "userInfo ( - lastname VARCHAR(128) NOT NULL, - firstname VARCHAR(128) NOT NULL, - job varchar(128), - degree VARCHAR(128), - capability TEXT, - description TEXT, - phoneNumber VARCHAR(10), - adress VARCHAR(128), - zipCode VARCHAR(6), - city VARCHAR(128), - userId INT UNSIGNED PRIMARY KEY, - FOREIGN KEY (userId) - REFERENCES userAccount(id) - )"; - // Infos sur les missions effectuées, liée à userAccount par userId et consultantId à id - private $createTableMission = "mission ( - id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, - date TIMESTAMP NOT NULL, - subject VARCHAR(128), - note INT(1) UNSIGNED, - review TEXT, - userId INT UNSIGNED NOT NULL, - FOREIGN KEY (userId) - REFERENCES userAccount(id), - consultantId INT UNSIGNED NOT NULL, - FOREIGN KEY (consultantId) - REFERENCES userAccount(id) - )"; - + // UserAccount, infos du compte nécessaire à la connection + private $createTableUserAccount = "CREATE TABLE IF NOT EXISTS `alphajob`.`userAccount` ( + `userId` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `email` VARCHAR(128) NOT NULL, + `password` VARCHAR(128) NOT NULL, + `tokenAutoLogin` VARCHAR(128) NULL DEFAULT NULL, + `inscriptionDate` TIMESTAMP NOT NULL, + `isClient` TINYINT(1) NOT NULL, + `isPro` TINYINT(1) NOT NULL, + `isAdmin` TINYINT(1) NOT NULL, + PRIMARY KEY (`userId`) + ) + ENGINE = InnoDB + DEFAULT CHARACTER SET = utf8;"; + + // Infos complémentaires des utilisateur, liée à userAccount par userId + private $createTableUserInfo = "CREATE TABLE IF NOT EXISTS `alphajob`.`userInfo` ( + `lastname` VARCHAR(128) NOT NULL, + `firstname` VARCHAR(128) NOT NULL, + `phoneNumber` VARCHAR(10) NOT NULL, + `adress` VARCHAR(128) NOT NULL, + `zipCode` VARCHAR(6) NOT NULL, + `city` VARCHAR(128) NOT NULL, + `job` VARCHAR(128) NULL DEFAULT NULL, + `degree` VARCHAR(128) NULL DEFAULT NULL, + `capability` TEXT NULL DEFAULT NULL, + `description` TEXT NULL DEFAULT NULL, + `userId` INT UNSIGNED NOT NULL, + PRIMARY KEY (`userId`), + INDEX `fk_userinfo_userId_idx` (`userId` ASC) VISIBLE, + CONSTRAINT `fk_userinfo_userId` + FOREIGN KEY (`userId`) + REFERENCES `alphajob`.`userAccount` (`userId`) + ON DELETE CASCADE + ON UPDATE CASCADE + ) + ENGINE = InnoDB + DEFAULT CHARACTER SET = utf8;"; + + // Liste des categories d'emploie possible + private $createTableJobCategory = "CREATE TABLE IF NOT EXISTS `alphajob`.`jobCategory` ( + `jobCategoryId` INT UNSIGNED NOT NULL, + `categoryName` VARCHAR(128) NOT NULL, + PRIMARY KEY (`jobCategoryId`) + ) + ENGINE = InnoDB + DEFAULT CHARACTER SET = utf8;"; + + // Assosications des emploies à un utilisateur + private $createTableUserJob = "CREATE TABLE IF NOT EXISTS `alphajob`.`userJob` ( + `userId` INT UNSIGNED NOT NULL, + `jobCategoryId` INT UNSIGNED NOT NULL, + INDEX `fk_userInfo_userId_idx` (`userId` ASC) VISIBLE, + INDEX `fk_jobCategory_jobCategoryId_idx` (`jobCategoryId` ASC) VISIBLE, + CONSTRAINT `fk_userJob_userId` + FOREIGN KEY (`userId`) + REFERENCES `alphajob`.`userAccount` (`userId`) + ON DELETE NO ACTION + ON UPDATE CASCADE, + CONSTRAINT `fk_userJob_jobCategoryId` + FOREIGN KEY (`jobCategoryId`) + REFERENCES `alphajob`.`jobCategory` (`jobCategoryId`) + ON DELETE NO ACTION + ON UPDATE CASCADE + ) + ENGINE = InnoDB + DEFAULT CHARACTER SET = utf8;"; + + // Infos sur les missions effectuées, liée à userAccount par userId et consultantId + private $createTableMission = "CREATE TABLE IF NOT EXISTS `alphajob`.`mission` ( + `missionId` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `date` TIMESTAMP NOT NULL, + `subject` VARCHAR(128) NULL DEFAULT NULL, + `note` INT UNSIGNED NULL DEFAULT NULL, + `review` TEXT NULL DEFAULT NULL, + `acceptedByPro` TIMESTAMP NULL DEFAULT NULL, + `validatedByClient` TIMESTAMP NULL DEFAULT NULL, + `validatedByPro` TIMESTAMP NULL DEFAULT NULL, + `clientId` INT UNSIGNED NOT NULL, + `proId` INT UNSIGNED NOT NULL, + `jobCategoryId` INT UNSIGNED NOT NULL, + PRIMARY KEY (`missionId`), + INDEX `fk_mission_clientId_idx` (`clientId` ASC) VISIBLE, + INDEX `fk_mission_proId_idx` (`proId` ASC) VISIBLE, + INDEX `fk_mission_jobCategoryId_idx` (`jobCategoryId` ASC) VISIBLE, + CONSTRAINT `fk_mission_clientId` + FOREIGN KEY (`clientId`) + REFERENCES `alphajob`.`userAccount` (`userId`) + ON DELETE NO ACTION + ON UPDATE CASCADE, + CONSTRAINT `fk_mission_proId` + FOREIGN KEY (`proId`) + REFERENCES `alphajob`.`userAccount` (`userId`) + ON DELETE NO ACTION + ON UPDATE CASCADE, + CONSTRAINT `fk_mission_jobCategoryId` + FOREIGN KEY (`jobCategoryId`) + REFERENCES `alphajob`.`jobCategory` (`jobCategoryId`) + ON DELETE NO ACTION + ON UPDATE CASCADE + ) + ENGINE = InnoDB + DEFAULT CHARACTER SET = utf8;"; + // Noms des tables protected $tableUserAccount = "userAccount"; protected $tableUserInfo = "userInfo"; + protected $tableJobCategory = "jobCategory"; + protected $tableUserJob = "userJob"; protected $tableMission = "mission"; // Création de la DB si elle n'existe pas @@ -85,13 +151,24 @@ class DbMain { // Création des tables si elles n'existent pas private function create_table() { - $reqInitUserAccount = "CREATE TABLE IF NOT EXISTS ".$this->createTableUserAccount; + // userAccount + $reqInitUserAccount = $this->createTableUserAccount; $res = $this->conn->prepare($reqInitUserAccount); $res->execute(); - $reqInitUserInfo = "CREATE TABLE IF NOT EXISTS ".$this->createTableUserInfo; + // userInfo + $reqInitUserInfo = $this->createTableUserInfo; $res = $this->conn->prepare($reqInitUserInfo); $res->execute(); - $reqInitMission = "CREATE TABLE IF NOT EXISTS ".$this->createTableMission; + // 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(); } @@ -127,8 +204,8 @@ class DbMain { } // Vérifie si l'id est un consultant dans la table userAccount de la BDD - final public function check_exist_consultant($id) { - $reqCheckExistConsultant = "SELECT EXISTS(SELECT * FROM ".$this->tableUserAccount." WHERE id = ? AND isConsultant = '1')"; + 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]; @@ -137,7 +214,11 @@ class DbMain { // Fonction "auto", déclenchée à l'instanciation final public function __construct() { // Essaie de se connecter a la BDD - $this->conn = new PDO("mysql:host=".$this->host, $this->user, $this->pass); + 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)); + } } } ?>
\ No newline at end of file diff --git a/Database/meth_dbsearch.php b/Database/meth_dbsearch.php index 0a325aa..a90925c 100644 --- a/Database/meth_dbsearch.php +++ b/Database/meth_dbsearch.php @@ -19,8 +19,8 @@ class DbSearch extends DbMain { // Récupération des infos d'un compte par son id final public function search_user_by_id($id) { - $reqSearchUser = "SELECT id, email, inscriptionDate, isAdmin, isUser, isConsultant - FROM ".$this->tableUserAccount." WHERE id = ?"; + $reqSearchUser = "SELECT userId, email, inscriptionDate, isClient, isPro, isAdmin + FROM ".$this->tableUserAccount." WHERE userId = ?"; $data = $this->exec_cmd($reqSearchUser, array($id))->fetch(PDO::FETCH_ASSOC); return $data; } @@ -37,10 +37,10 @@ class DbSearch extends DbMain { // Récupération des infos d'un consultant par son nom final public function search_consultant_by_name($research) { - $reqSearchConsultant = "SELECT id, lastname, firstname, job, capability FROM ".$this->tableUserInfo." + $reqSearchConsultant = "SELECT userId, lastname, firstname, job, capability FROM ".$this->tableUserInfo." INNER JOIN ".$this->tableUserAccount." - ON ".$this->tableUserInfo.".userId = ".$this->tableUserAccount.".id - WHERE isConsultant = '1' AND lastname LIKE CONCAT('%', ?, '%')"; + ON ".$this->tableUserInfo.".userId = ".$this->tableUserAccount.".userId + WHERE isPro = '1' AND lastname LIKE CONCAT('%', ?, '%')"; $data = $this->exec_cmd($reqSearchConsultant, array($research))->fetchAll(PDO::FETCH_ASSOC); return $data; } @@ -49,7 +49,7 @@ class DbSearch extends DbMain { final public function get_consultant_note_by_name($name) { $reqCountMission = "SELECT note FROM ".$this->tableMission." INNER JOIN ".$this->tableUserInfo." - ON ".$this->tableMission.".consultantId = ".$this->tableUserInfo.".userId + ON ".$this->tableMission.".proId = ".$this->tableUserInfo.".userId WHERE lastname = ?"; $data = $this->exec_cmd($reqCountMission, array($name))->fetchAll(PDO::FETCH_ASSOC); return $data; @@ -58,9 +58,9 @@ class DbSearch extends DbMain { // Récupérations des missions d'un consultant par son id final public function get_all_mission_by_id($id) { $reqGetAllMission = "SELECT subject, note, review, lastname FROM ".$this->tableMission." - INNER JOIN ".$this->tableUserInfo." - ON ".$this->tableMission.".userId = ".$this->tableUserInfo.".userId - WHERE consultantId = ?"; + LEFT JOIN ".$this->tableUserInfo." + ON ".$this->tableMission.".missionId = ".$this->tableUserInfo.".userId + WHERE proId = ?"; $data = $this->exec_cmd($reqGetAllMission, array($id))->fetchAll(PDO::FETCH_ASSOC); return $data; } @@ -69,7 +69,7 @@ class DbSearch extends DbMain { final public function count_consultant_mission_by_name($name) { $reqCountMission = "SELECT COUNT(*) FROM ".$this->tableMission." INNER JOIN ".$this->tableUserInfo." - ON ".$this->tableMission.".consultantId = ".$this->tableUserInfo.".userId + ON ".$this->tableMission.".proId = ".$this->tableUserInfo.".userId WHERE lastname = ?"; $data = $this->exec_cmd($reqCountMission, array($name))->fetchAll(PDO::FETCH_ASSOC); return $data; diff --git a/Database/meth_dbuser.php b/Database/meth_dbuser.php index 8e6ec35..cba1683 100644 --- a/Database/meth_dbuser.php +++ b/Database/meth_dbuser.php @@ -9,7 +9,7 @@ require_once(dirname( __FILE__ )."/dbmain.php"); // Extension de cette classe avec dbmain class DbUser extends DbMain { // Enregistrement d'un nouvel utilisateur - final public function add_user($email, $pass, $is_admin, $is_user, $is_consultant) { + final public function add_user($email, $pass, $is_client, $is_pro, $is_admin) { // On vérifie si l'email existe deja dans la bdd $exist = $this->check_exist_email($email); // Si non @@ -18,16 +18,16 @@ class DbUser extends DbMain { $crypt = $this->crypt_pass($pass); // Préparation de la requète $reqAddUser = "INSERT INTO ".$this->tableUserAccount." - (email, password, inscriptionDate, isAdmin, isUser, isConsultant) + (email, password, inscriptionDate, isClient, isPro, isAdmin) VALUES (?, ?, ?, ?, ?, ?)"; // Execution de la requète $this->exec_cmd($reqAddUser, array($email, $crypt, date("Y-m-d H:i:s"), - $is_admin, - $is_user, - $is_consultant + $is_client, + $is_pro, + $is_admin ) ); // Retourne 1 pour réussite @@ -39,17 +39,17 @@ class DbUser extends DbMain { } // Suppresion d'un utilisateur - final public function del_user($id) { + final public function del_user($userId) { // Préparation de la requète pour voir si l'utilisateur existe - $reqCheckExistId = "SELECT EXISTS(SELECT * FROM ".$this->tableUserAccount." WHERE id = ?)"; + $reqCheckExistId = "SELECT EXISTS(SELECT * FROM ".$this->tableUserAccount." WHERE userId = ?)"; // Exécution de la requète - $data = $this->exec_cmd($reqCheckExistId, array($id))->fetchAll(PDO::FETCH_NUM); + $data = $this->exec_cmd($reqCheckExistId, array($userId))->fetchAll(PDO::FETCH_NUM); // Si il existe if ($data[0][0]) { // Préparation de la requète pour suppression - $reqDelUser = "DELETE FROM ".$this->tableUserAccount." WHERE id = ?"; + $reqDelUser = "DELETE FROM ".$this->tableUserAccount." WHERE userId = ?"; // Exécution de la requète - $this->exec_cmd($reqDelUser, array($id)); + $this->exec_cmd($reqDelUser, array($userId)); // Retourne 1 pour réussite return 1; } else { @@ -77,20 +77,20 @@ class DbUser extends DbMain { } // Enregistrement d'une mission - final public function register_mission($subject, $note, $review, $userId, $consultantId) { + final public function register_mission($subject, $note, $review, $clientId, $proId) { // Vérification de l'existance de l'id de consultant - $exist = $this->check_exist_consultant($consultantId); + $exist = $this->check_exist_pro($proId); // Si il existe if ($exist) { // Préparation de la requète pour enregistrement de la mission $reqAddMission = "INSERT INTO ".$this->tableMission." - (date, subject, note, review, userId, consultantId) + (date, subject, note, review, clientId, proId) VALUES (?, ?, ?, ?, ?, ?)"; // Exécution de la requète $this->exec_cmd($reqAddMission, array(date("Y-m-d H:i:s"), $subject, $note, $review, - $userId, $consultantId + $clientId, $proId ) ); // Retourne 1 pour réussite @@ -104,7 +104,7 @@ class DbUser extends DbMain { // Vérification de la combinaison email - pass pour authentification final public function check_credential($email, $pass) { // Préparation de la requète pour récupérer les infos ou l'email est présent - $reqCheckCredential = "SELECT id, password + $reqCheckCredential = "SELECT userId, password FROM ".$this->tableUserAccount." WHERE email = ? "; // Chiffrement du mot de passe $crypt = $this->crypt_pass($pass); @@ -113,7 +113,7 @@ class DbUser extends DbMain { // Vérifiaction de correspondance email & pass foreach ($data as $rows) { if ($rows["password"] == $crypt) { - return $rows["id"]; + return $rows["userId"]; } } } @@ -121,14 +121,14 @@ class DbUser extends DbMain { // Vérification de la combinaison email - jeton d'auto-login pour authentification final public function check_token_autologin($email, $token) { // Préparation de la requète pour récupérer les infos ou l'email est présent - $reqCheckToken = "SELECT id, tokenAutoLogin + $reqCheckToken = "SELECT userId, tokenAutoLogin FROM ".$this->tableUserAccount." WHERE email = ?"; // Exécution de la requète $data = $this->exec_cmd($reqCheckToken, array($email))->fetchAll(PDO::FETCH_ASSOC); // Vérifiaction de correspondance email & jeton d'auto-connection foreach ($data as $rows) { if ($rows["tokenAutoLogin"] == $token) { - return $rows["id"]; + return $rows["userId"]; } } } diff --git a/Documents_et_infos/Bdd_mysql/mld_bdd_original.png b/Documents_et_infos/Bdd_mysql/mld_bdd_original.png Binary files differnew file mode 100644 index 0000000..228e677 --- /dev/null +++ b/Documents_et_infos/Bdd_mysql/mld_bdd_original.png diff --git a/Documents_et_infos/Bdd_mysql/mysql_alphajob.mwb b/Documents_et_infos/Bdd_mysql/mysql_alphajob.mwb Binary files differnew file mode 100644 index 0000000..3a0658c --- /dev/null +++ b/Documents_et_infos/Bdd_mysql/mysql_alphajob.mwb diff --git a/Documents_et_infos/Bdd_mysql/mysql_alphajob.mwb.bak b/Documents_et_infos/Bdd_mysql/mysql_alphajob.mwb.bak Binary files differnew file mode 100644 index 0000000..5f39098 --- /dev/null +++ b/Documents_et_infos/Bdd_mysql/mysql_alphajob.mwb.bak diff --git a/Documents_et_infos/Bdd_mysql/mysql_alphajob.png b/Documents_et_infos/Bdd_mysql/mysql_alphajob.png Binary files differnew file mode 100644 index 0000000..89e8df5 --- /dev/null +++ b/Documents_et_infos/Bdd_mysql/mysql_alphajob.png diff --git a/Documents_et_infos/Bdd_mysql/mysql_alphajob.sql b/Documents_et_infos/Bdd_mysql/mysql_alphajob.sql new file mode 100644 index 0000000..d556d0a --- /dev/null +++ b/Documents_et_infos/Bdd_mysql/mysql_alphajob.sql @@ -0,0 +1,143 @@ +-- MySQL Script generated by MySQL Workbench +-- Wed Mar 2 13:18:27 2022 +-- Model: New Model Version: 1.0 +-- MySQL Workbench Forward Engineering + +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; + +-- ----------------------------------------------------- +-- Schema exophp +-- ----------------------------------------------------- + +-- ----------------------------------------------------- +-- Schema exophp +-- ----------------------------------------------------- +CREATE SCHEMA IF NOT EXISTS `exophp` DEFAULT CHARACTER SET utf8 ; +USE `exophp` ; + +-- ----------------------------------------------------- +-- Table `exophp`.`userAccount` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `exophp`.`userAccount` ( + `userId` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `email` VARCHAR(128) NOT NULL, + `password` VARCHAR(128) NOT NULL, + `tokenAutoLogin` VARCHAR(128) NULL DEFAULT NULL, + `inscriptionDate` TIMESTAMP NOT NULL, + `isClient` TINYINT(1) UNSIGNED NOT NULL, + `isPro` TINYINT(1) UNSIGNED NOT NULL, + `isAdmin` TINYINT(1) UNSIGNED NOT NULL, + PRIMARY KEY (`userId`)) +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8; + + +-- ----------------------------------------------------- +-- Table `exophp`.`jobCategrory` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `exophp`.`jobCategrory` ( + `jobCategoryId` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `categoryName` VARCHAR(128) NOT NULL, + PRIMARY KEY (`jobCategoryId`)) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `exophp`.`mission` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `exophp`.`mission` ( + `missionId` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `date` TIMESTAMP NOT NULL, + `subject` VARCHAR(128) NOT NULL, + `note` TINYINT(1) UNSIGNED NULL DEFAULT NULL, + `review` TEXT NULL DEFAULT NULL, + `acceptedByPro` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0, + `validatedByClient` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0, + `validatedByPro` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0, + `clientId` INT UNSIGNED NOT NULL, + `proId` INT UNSIGNED NOT NULL, + `jobCategroryId` INT UNSIGNED NOT NULL, + PRIMARY KEY (`missionId`), + INDEX `fk_mission_clientId_idx` (`clientId` ASC) VISIBLE, + INDEX `fk_mission_proId_idx` (`proId` ASC) VISIBLE, + INDEX `fk_mission_jobCategroryId_idx` (`jobCategroryId` ASC) VISIBLE, + CONSTRAINT `fk_mission_userId` + FOREIGN KEY (`clientId`) + REFERENCES `exophp`.`userAccount` (`userId`) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_mission_consultantId` + FOREIGN KEY (`proId`) + REFERENCES `exophp`.`userAccount` (`userId`) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_mission_jobcategrory1` + FOREIGN KEY (`jobCategroryId`) + REFERENCES `exophp`.`jobCategrory` (`jobCategoryId`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8; + + +-- ----------------------------------------------------- +-- Table `exophp`.`userInfo` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `exophp`.`userInfo` ( + `lastName` VARCHAR(128) NOT NULL, + `firstName` VARCHAR(128) NOT NULL, + `phoneNumber` VARCHAR(10) NOT NULL, + `adress` VARCHAR(128) NOT NULL, + `zipCode` VARCHAR(6) NOT NULL, + `city` VARCHAR(128) NOT NULL, + `job` VARCHAR(128) NULL DEFAULT NULL, + `degree` VARCHAR(128) NULL DEFAULT NULL, + `capability` TEXT NULL DEFAULT NULL, + `description` TEXT NULL DEFAULT NULL, + `userId` INT UNSIGNED NOT NULL, + PRIMARY KEY (`userId`), + INDEX `fk_userinfo_userId_idx` (`userId` ASC) VISIBLE, + CONSTRAINT `fk_userinfo_userId` + FOREIGN KEY (`userId`) + REFERENCES `exophp`.`userAccount` (`userId`) + ON DELETE CASCADE + ON UPDATE CASCADE) +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8; + + +-- ----------------------------------------------------- +-- Table `exophp`.`category` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `exophp`.`category` ( + `category_id` INT NOT NULL, + `name` VARCHAR(255) NOT NULL, + PRIMARY KEY (`category_id`)); + + +-- ----------------------------------------------------- +-- Table `exophp`.`userJob` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `exophp`.`userJob` ( + `jobCategroryId` INT UNSIGNED NOT NULL, + `userId` INT UNSIGNED NOT NULL, + INDEX `fk_userJob_jobcategrory1_idx` (`jobCategroryId` ASC) VISIBLE, + INDEX `fk_userJob_userinfo1_idx` (`userId` ASC) VISIBLE, + CONSTRAINT `fk_userJob_jobCategroryId` + FOREIGN KEY (`jobCategroryId`) + REFERENCES `exophp`.`jobCategrory` (`jobCategoryId`) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_userJob_userId` + FOREIGN KEY (`userId`) + REFERENCES `exophp`.`userInfo` (`userId`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; diff --git a/Documents_et_infos/Structure_plan_de_site/arborescence_alphajob.jpg b/Documents_et_infos/Structure_plan_de_site/arborescence_alphajob.jpg Binary files differnew file mode 100644 index 0000000..1a543f2 --- /dev/null +++ b/Documents_et_infos/Structure_plan_de_site/arborescence_alphajob.jpg diff --git a/Documents_et_infos/Structure_plan_de_site/depth_optimised.jpg b/Documents_et_infos/Structure_plan_de_site/depth_optimised.jpg Binary files differnew file mode 100644 index 0000000..5a7303b --- /dev/null +++ b/Documents_et_infos/Structure_plan_de_site/depth_optimised.jpg diff --git a/Documents_et_infos/Structure_plan_de_site/logigramme_fonction_login.jpg b/Documents_et_infos/Structure_plan_de_site/logigramme_fonction_login.jpg Binary files differnew file mode 100644 index 0000000..5aef760 --- /dev/null +++ b/Documents_et_infos/Structure_plan_de_site/logigramme_fonction_login.jpg diff --git a/Documents_et_infos/Structure_plan_de_site/structure_projet web.jpg b/Documents_et_infos/Structure_plan_de_site/structure_projet web.jpg Binary files differnew file mode 100644 index 0000000..d4564ad --- /dev/null +++ b/Documents_et_infos/Structure_plan_de_site/structure_projet web.jpg diff --git a/Documents_et_infos/Zooning_maquette_graphique/infos_css.txt b/Documents_et_infos/Zooning_maquette_graphique/infos_css.txt new file mode 100644 index 0000000..98eaea4 --- /dev/null +++ b/Documents_et_infos/Zooning_maquette_graphique/infos_css.txt @@ -0,0 +1,16 @@ + +Tailles écrans: +https://gbksoft.com/blog/common-screen-sizes-for-responsive-web-design/ +https://www.w3schools.com/browsers/browsers_display.asp +https://99designs.fr/blog/design-web-digital/lconception-sites-web-adaptatifs/ + +Infos utiles: +https://kinsta.com/fr/wp-content/uploads/sites/4/2020/09/points-rupture-responsives-bootstrap.png +https://raidboxes.io/fr/blog/webdesign-development/webdesign-trends-2021/ +https://webdesign.tutsplus.com/tutorials/how-to-create-a-frosted-glass-effect-in-css--cms-32535 + +Fonds: +https://unsplash.com/photos/eMNevd6ErCU + +Lisibilité et texte: +http://all-for-design.com/web-design/lisibilite-des-sites-web-font-size-100-16px/
\ No newline at end of file diff --git a/Documents_et_infos/Zooning_maquette_graphique/maquette_page_web.jpg b/Documents_et_infos/Zooning_maquette_graphique/maquette_page_web.jpg Binary files differnew file mode 100644 index 0000000..2e4a256 --- /dev/null +++ b/Documents_et_infos/Zooning_maquette_graphique/maquette_page_web.jpg diff --git a/Documents_et_infos/Zooning_maquette_graphique/zooning_avance.epgz b/Documents_et_infos/Zooning_maquette_graphique/zooning_avance.epgz Binary files differnew file mode 100644 index 0000000..db034cb --- /dev/null +++ b/Documents_et_infos/Zooning_maquette_graphique/zooning_avance.epgz diff --git a/Documents_et_infos/Zooning_maquette_graphique/zooning_simple.epgz b/Documents_et_infos/Zooning_maquette_graphique/zooning_simple.epgz Binary files differnew file mode 100644 index 0000000..a2051a0 --- /dev/null +++ b/Documents_et_infos/Zooning_maquette_graphique/zooning_simple.epgz diff --git a/Documents_et_infos/cahier_des_charges_fonctionnalitees.jpg b/Documents_et_infos/cahier_des_charges_fonctionnalitees.jpg Binary files differnew file mode 100644 index 0000000..8519988 --- /dev/null +++ b/Documents_et_infos/cahier_des_charges_fonctionnalitees.jpg diff --git a/Documents_et_infos/infos_generales.txt b/Documents_et_infos/infos_generales.txt new file mode 100644 index 0000000..05ef1f6 --- /dev/null +++ b/Documents_et_infos/infos_generales.txt @@ -0,0 +1,73 @@ +******************************************************************************* + Infos: Déroulé de la réalisation de l'exercice. +******************************************************************************* + +Le cahier des charges que je me suis fixé pour cet exercice est un peu plus chargé +que ce qui était demandé initalement: +-Mettre en place un sytème de client / consultant (et non uniquement pour moi). +-Mettre en place un système d'inscription. +-Mettre en place un système de connection. +-Rechercher par nom un consultant. +-Afficher les capacités d'un consultant. +-Pouvoir enregistrer et noter une mission effectuée auprès d'un consultant en +tant que client. +-Pouvoir supprimer un utilisateur du site. + +Pour cet exercice, j'ai tout d'abord voulu créer mes pages web indépendamment les +unes des autres (index, login, register, etc...), il m'a rapidement paru évident +de séparer la gestion de la base de données dans un fichier à part, et mettre ce +système dans une classe m'a également paru être un bon choix car on pouvait avec +une classe définir les différents paramatres de connection à la base de données +dans les attributs de cette dernière et initier la connection à l'instanciation. +Ce système me permettait de mettre en place des requêtes en créant des méthodes et la classe +grossissant j'ai décidé de la scinder en trois, le fichier principal contenant les +informations de connection et d'initialisation de la base de données ainsi que quelques +requêtes basiques, un second fichier contenant toutes les méthodes pour effectuer des +recherches, et un dernier fichier contenant toutes les méthodes permettant de pouvoir +modifier les éléments de la base de données. + +En avancant dans l'exercice, j'ai voulu séparer la partie "logique" (traitement des données) +de la partie "rendue" (partie envoyée au client), les fichiers grossissants rapidement +cela permettait de gérer plus clairement ces deux parties du site. + +J'ai alors décidé de faire un fichier logique que j'ai appelé "wrapper", +ce wrapper avait deux objectifs: +- Récupérer les données transmises par les formulaires. +- Effectuer toute la partie logique (le traitement des données). +Je souhaitais renvoyer toutes les données vers un seul fichier pour minimiser +l'exposition d'informations transmises au client quand au fonctionnement du site web, +dans une optique de sécurité je souhaite afficher au client +uniquement le strict minimum. Ce fichier wrapper a lui aussi rapidement grossi, +et dans un soucis de lisibilité et de facilité de maintenance, j'ai décidé de le diviser +en plusieurs fichiers qui sont devenus ses fonctions. + +Enfin la partie "rendue" contenait les différentes pages accessibles par le client, +voulant éviter la répétition dans les différentes pages, j'ai séparé les parties +communes dans des fichiers à part (header, navbar, footer) cela me permettait en +modifiant un seul fichier de modifier le rendu sur toutes les pages, et dans un +soucis d'uniformité, j'ai décidé de "sortir" également les parties principales des +différentes pages et de placer le tout dans un dossier nommé "includes" dans lequel +les pages pourraient importer leur contenu. Enfin pour la gestion des langues, il +m'a paru opportun de créer des fichiers contenant le texte pour chaque langue à la +manière de fichier de traduction pour vidéo, et le site allait importer ensuite le +fichier en fonction de la langue sélectionnée, pour le faire j'ai créé deux dossiers +"fr" et "en" et je change la source de l'import en fonction de la langue choisie +par le client. + +Pour permettre une retention d'information entre les pages, le système de session +m'a paru inévitable et grâce à ce dernier, j'ai pu mettre en place le système +de changement de langue (défini dans une variable de cette dernière), un système de +connection (on affiche différents éléments en fonction du contenu de variable défini dans la session). + +J'ai également choisi de créer un système d'auto-connection car je voulais +expérimenter l'utilisation de cookie en PHP pour mettre en place ce système +le but était de créer un "jeton d'auto-connection": une chaine de caractères aléatoires +permettant la connection, valable une seule fois et qui serait stoqué 7 jours +sur le navigateur du client. La session ne restant ouverte +par défaut que 24 min (https://stackoverflow.com/questions/9904105/php-sessions-default-timeout). + +Pour la charte graphique, j'ai mis en place ce qui me parait être la structure la plus basique +pour un site web: En-tête avec barre de navigation -> corps de la page -> pied de page. +J'ai choisi un style clair, anguleux et épuré avec une dominance pour le rouge. + +Et enfin pour pouvoir faire un peu de JS, j'ai choisi de créer un slideshow. diff --git a/Views/Includes/en/table.php b/Views/Includes/en/table.php index 1ce9816..0b778af 100644 --- a/Views/Includes/en/table.php +++ b/Views/Includes/en/table.php @@ -39,7 +39,7 @@ $header = [ ["Subject", "Note", "Review", - "CLient Lastname"] + "Client Lastname"] ]; $yes = "Yes"; $no = "No"; diff --git a/Views/Includes/en/text.php b/Views/Includes/en/text.php index 872ca62..7caf330 100644 --- a/Views/Includes/en/text.php +++ b/Views/Includes/en/text.php @@ -3,15 +3,15 @@ // Description: Texte du site // **************************************************************************** $text = [ - "incl_delete_form" => [ + "incl_form_delete" => [ "h2" => "Delete an user", "id" => "ID to delete", "submit" => "Delete", ], - "incl_footer" => [ + "incl_global_footer" => [ "main" => "Made by Debulois Quentin for my professional folder.<br>December 2021, all rights reserved.", ], - "incl_userInfo_form" => [ + "incl_form_userInfo" => [ "h2" => "Informations about the user.", "lastname" => "Last name", "firstname" => "First name", @@ -25,24 +25,24 @@ $text = [ "city" => "City", "submit" => "Modify" ], - "incl_login_form" => [ + "incl_form_login" => [ "h2" => "Login", "email" => "Email", "password" => "Password", "rememberMe" => "Remember me", "submit" => "Sign-in" ], - "incl_mission_form" => [ + "incl_form_mission" => [ "h2" => "Form to register a mission", "subject" => "Subject", "review" => "Review", "consultantId" => "Consultant ID", "submit" => "Register" ], - "incl_myMission_table" => [ + "incl_table_myMission" => [ "h2" => "My missions" ], - "incl_navbar" => [ + "incl_global_navbar" => [ "h2" => "AlphaJob", "btnSearch" => "Search", "btnInfos" => "Modif. infos", @@ -55,7 +55,7 @@ $text = [ "lang" => "Language", "btnLang" => "Select" ], - "incl_register_form" => [ + "incl_form register" => [ "h2" => "Form to sign-in", "email" => "Email", "password" => "Password", diff --git a/Views/Includes/fr/text.php b/Views/Includes/fr/text.php index 7820ea3..8d72f26 100644 --- a/Views/Includes/fr/text.php +++ b/Views/Includes/fr/text.php @@ -3,15 +3,15 @@ // Description: Texte du site // **************************************************************************** $text = [ - "incl_delete_form" => [ + "incl_form_delete" => [ "h2" => "Supprimer un utilisateur", "id" => "ID à supprimer", "submit" => "Supprimer", ], - "incl_footer" => [ + "incl_global_footer" => [ "main" => "Réalisé par Debulois Quentin pour mon dossier professionel.<br>Decembre 2021, tous droits réservés.", ], - "incl_userInfo_form" => [ + "incl_form_userInfo" => [ "h2" => "Informations sur l'utilisateur.", "lastname" => "Nom", "firstname" => "Prénom", @@ -25,24 +25,24 @@ $text = [ "city" => "Ville", "submit" => "Modifier" ], - "incl_login_form" => [ + "incl_form_login" => [ "h2" => "Identification", "email" => "Email", "password" => "Mot de passe", "rememberMe" => "Se souvenir de moi", "submit" => "Connection" ], - "incl_mission_form" => [ + "incl_form_mission" => [ "h2" => "Formulaire pour enregistrer une mission", "subject" => "Sujet", "review" => "Commentaire", "consultantId" => "ID du consultant", "submit" => "Enregistrer" ], - "incl_myMission_table" => [ + "incl_table_myMission" => [ "h2" => "Mes missions" ], - "incl_navbar" => [ + "incl_global_navbar" => [ "h2" => "AlphaJob", "btnSearch" => "Rechercher", "btnInfos" => "Modif. infos", @@ -55,7 +55,7 @@ $text = [ "lang" => "Langue", "btnLang" => "Sélectionner" ], - "incl_register_form" => [ + "incl_form_register" => [ "h2" => "Formulaire d'inscription", "email" => "Email", "password" => "Mot de passe", diff --git a/Views/Includes/incl_delete_form.php b/Views/Includes/incl_form_delete.php index bc1dc80..99ce216 100644 --- a/Views/Includes/incl_delete_form.php +++ b/Views/Includes/incl_form_delete.php @@ -20,7 +20,7 @@ echo(' <!-- Separateur --> <form class="flex-center" action="../../Wrapper/wrapper.php" method="post"> <label class="width-auto"> <i class="fas fa-trash-alt"></i> - <input type="text" name="id" maxlength="10" placeholder="'.$text[basename(__FILE__, ".php")]["id"].'"> + <input type="text" name="userId" maxlength="10" placeholder="'.$text[basename(__FILE__, ".php")]["id"].'"> </label> <input type="submit" value="'.$text[basename(__FILE__, ".php")]["submit"].'"> </form>'.PHP_EOL); @@ -42,9 +42,9 @@ foreach ($result as $rows) { <tr>".PHP_EOL); foreach ($rows as $key => $value) { // Traduction du résultat si reponse binaire en Oui / Non. - if (($key == "isUser" || $key == "isConsultant" || $key == "isAdmin") && $value == "1") { + if (($key == "isClient" || $key == "isPro" || $key == "isAdmin") && $value == "1") { echo(" <td><pre>".$yes."<prepre></td>".PHP_EOL); - } elseif (($key == "isUser" || $key == "isConsultant" || $key == "isAdmin") && $value == "0") { + } elseif (($key == "isClient" || $key == "isPro" || $key == "isAdmin") && $value == "0") { echo(" <td><pre>".$no."<prepre></td>".PHP_EOL); } else { echo(" <td><pre>".$value."</pre></td>".PHP_EOL); diff --git a/Views/Includes/incl_login_form.php b/Views/Includes/incl_form_login.php index 5f76160..5f76160 100644 --- a/Views/Includes/incl_login_form.php +++ b/Views/Includes/incl_form_login.php diff --git a/Views/Includes/incl_mission_form.php b/Views/Includes/incl_form_mission.php index 2fed999..4d6d311 100644 --- a/Views/Includes/incl_mission_form.php +++ b/Views/Includes/incl_form_mission.php @@ -30,7 +30,7 @@ echo(' <div class="separator"></div> </label> <label> <i class="fas fa-user-cog"></i> - <input type="text" name="consultantId" placeholder="'.$text[basename(__FILE__, ".php")]["consultantId"].'" maxlength="10" required> + <input type="text" name="proId" placeholder="'.$text[basename(__FILE__, ".php")]["consultantId"].'" maxlength="10" required> </label> <input type="submit" value="'.$text[basename(__FILE__, ".php")]["submit"].'"> </form> diff --git a/Views/Includes/incl_register_form.php b/Views/Includes/incl_form_register.php index d95f552..bb046ce 100644 --- a/Views/Includes/incl_register_form.php +++ b/Views/Includes/incl_form_register.php @@ -19,8 +19,8 @@ echo(' <!-- Separateur --> <input type="password" name="password" id="password" maxlength="128" placeholder="'.$text[basename(__FILE__, ".php")]["password"].'" maxlength="128" required> </label> <label class="info flex-center">'.$text[basename(__FILE__, ".php")]["notice"].'</label> - <label for="is_user" class="flex-center"><input type="checkbox" name="is_user" id="is_user">'.$text[basename(__FILE__, ".php")]["isUser"].'</label> - <label for="is_consultant" class="flex-center"><input type="checkbox" name="is_consultant" id="is_consultant">'.$text[basename(__FILE__, ".php")]["isConsultant"].'</label> + <label for="is_user" class="flex-center"><input type="checkbox" name="is_client" id="is_user">'.$text[basename(__FILE__, ".php")]["isUser"].'</label> + <label for="is_consultant" class="flex-center"><input type="checkbox" name="is_pro" id="is_consultant">'.$text[basename(__FILE__, ".php")]["isConsultant"].'</label> <label for="is_admin" class="flex-center"><input type="checkbox" name="is_admin" id="is_admin">'.$text[basename(__FILE__, ".php")]["isAdmin"].'</label> <input type="submit" value="'.$text[basename(__FILE__, ".php")]["submit"].'"> </form> diff --git a/Views/Includes/incl_userInfo_form.php b/Views/Includes/incl_form_userInfo.php index 200a3f5..4cc509c 100644 --- a/Views/Includes/incl_userInfo_form.php +++ b/Views/Includes/incl_form_userInfo.php @@ -9,7 +9,7 @@ require_once(dirname( __FILE__ )."/../../Database/meth_dbsearch.php"); // Instanciation de la bdd avec les méthodes de recherche. $dbsearch = new DbSearch; // Recherches des informations avec l'id de l'utilisateur actuellement connecté. -$info = $dbsearch->get_user_info_by_id($_SESSION["id"]); +$info = $dbsearch->get_user_info_by_id($_SESSION["userId"]); if (!$info) { $info = [ ["lastname" => "", diff --git a/Views/Includes/incl_footer.php b/Views/Includes/incl_global_footer.php index 6aa4014..6aa4014 100644 --- a/Views/Includes/incl_footer.php +++ b/Views/Includes/incl_global_footer.php diff --git a/Views/Includes/incl_header.php b/Views/Includes/incl_global_header.php index 060340c..060340c 100644 --- a/Views/Includes/incl_header.php +++ b/Views/Includes/incl_global_header.php diff --git a/Views/Includes/incl_message.php b/Views/Includes/incl_global_message.php index b4b653d..b4b653d 100644 --- a/Views/Includes/incl_message.php +++ b/Views/Includes/incl_global_message.php diff --git a/Views/Includes/incl_navbar.php b/Views/Includes/incl_global_navbar.php index 178f2e6..86241e9 100644 --- a/Views/Includes/incl_navbar.php +++ b/Views/Includes/incl_global_navbar.php @@ -17,13 +17,13 @@ echo(' <!-- Navbar --> if (isset($_SESSION["loggedIn"]) && $_SESSION["loggedIn"] == "1" ) { - if (isset($_SESSION["isUser"]) - && $_SESSION["isUser"] == "1" + if (isset($_SESSION["isClient"]) + && $_SESSION["isClient"] == "1" ) { echo(' <a href="/Views/mission.php"><li><i class="fas fa-plus-square"></i> '.$text[basename(__FILE__, ".php")]["btnMission"].'</li></a>'.PHP_EOL); } - if (isset($_SESSION["isConsultant"]) - && $_SESSION["isConsultant"] == "1" + if (isset($_SESSION["isPro"]) + && $_SESSION["isPro"] == "1" ) { echo(' <a href="/Views/myMission.php"><li><i class="fas fa-tasks"></i> '.$text[basename(__FILE__, ".php")]["btnMyMission"].'</li></a>'.PHP_EOL); } diff --git a/Views/Includes/incl_myMission_table.php b/Views/Includes/incl_table_myMission.php index 9a50f5c..b7e4ba9 100644 --- a/Views/Includes/incl_myMission_table.php +++ b/Views/Includes/incl_table_myMission.php @@ -11,7 +11,7 @@ require_once(dirname(__FILE__)."/../../Database/meth_dbsearch.php"); // Instanciation de la bdd avec les méthodes de recherche. $dbsearch = new DbSearch; // Recherches des missions avec l'id de l'utilisateur actuellement connecté. -$result = $dbsearch->get_all_mission_by_id($_SESSION["id"]); +$result = $dbsearch->get_all_mission_by_id($_SESSION["userId"]); echo(' <!-- Separateur --> <div class="separator"></div> <!-- Mes missions --> diff --git a/Views/delete.php b/Views/delete.php index af7c286..c11c768 100644 --- a/Views/delete.php +++ b/Views/delete.php @@ -22,14 +22,14 @@ if (!isset($_SESSION["loggedIn"], $_SESSION["isAdmin"]) <!DOCTYPE html> <?php echo('<html lang="'.$_SESSION["lang"].'">'.PHP_EOL); ?> <head> -<?php require_once(dirname( __FILE__ )."/Includes/incl_header.php"); ?> +<?php require_once(dirname( __FILE__ )."/Includes/incl_global_header.php"); ?> <?php require_once(dirname( __FILE__ )."/Includes/".$_SESSION["lang"]."/title.php"); ?> <?php echo(" <title>".$title[basename(__FILE__, ".php")]."</title>".PHP_EOL); ?> </head> <body> -<?php require_once(dirname( __FILE__ )."/Includes/incl_navbar.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/incl_delete_form.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/incl_footer.php"); ?> +<?php require_once(dirname( __FILE__ )."/Includes/incl_global_navbar.php"); ?> +<?php require_once(dirname( __FILE__ )."/Includes/incl_form_delete.php"); ?> +<?php require_once(dirname( __FILE__ )."/Includes/incl_global_footer.php"); ?> <script src="/Statics/Js/main.js"></script> </body> </html>
\ No newline at end of file diff --git a/Views/login.php b/Views/login.php index 19b1a3c..0bdeda3 100644 --- a/Views/login.php +++ b/Views/login.php @@ -13,14 +13,14 @@ $_SESSION["src"] = basename(__FILE__, ".php"); <!DOCTYPE html> <?php echo('<html lang="'.$_SESSION["lang"].'">'.PHP_EOL); ?> <head> -<?php require_once(dirname( __FILE__ )."/Includes/incl_header.php"); ?> +<?php require_once(dirname( __FILE__ )."/Includes/incl_global_header.php"); ?> <?php require_once(dirname( __FILE__ )."/Includes/".$_SESSION["lang"]."/title.php"); ?> <?php echo("<title>".$title[basename(__FILE__, ".php")]."</title>".PHP_EOL); ?> </head> <body> -<?php require_once(dirname( __FILE__ )."/Includes/incl_navbar.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/incl_login_form.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/incl_footer.php"); ?> +<?php require_once(dirname( __FILE__ )."/Includes/incl_global_navbar.php"); ?> +<?php require_once(dirname( __FILE__ )."/Includes/incl_form_login.php"); ?> +<?php require_once(dirname( __FILE__ )."/Includes/incl_global_footer.php"); ?> <script src="/Statics/Js/main.js"></script> </body> </html>
\ No newline at end of file diff --git a/Views/message.php b/Views/message.php index fa90ccd..489d01f 100644 --- a/Views/message.php +++ b/Views/message.php @@ -16,14 +16,14 @@ if (!isset($_SESSION["messageNumber"])) { <!DOCTYPE html> <?php echo('<html lang="'.$_SESSION["lang"].'">'.PHP_EOL); ?> <head> -<?php require_once(dirname( __FILE__ )."/Includes/incl_header.php"); ?> +<?php require_once(dirname( __FILE__ )."/Includes/incl_global_header.php"); ?> <?php require_once(dirname( __FILE__ )."/Includes/".$_SESSION["lang"]."/title.php"); ?> <?php echo(" <title>".$title[basename(__FILE__, ".php")]."</title>".PHP_EOL); ?> </head> <body> -<?php require_once(dirname( __FILE__ )."/Includes/incl_navbar.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/incl_message.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/incl_footer.php"); ?> +<?php require_once(dirname( __FILE__ )."/Includes/incl_global_navbar.php"); ?> +<?php require_once(dirname( __FILE__ )."/Includes/incl_global_message.php"); ?> +<?php require_once(dirname( __FILE__ )."/Includes/incl_global_footer.php"); ?> </body> </html> <?php unset($_SESSION["messageNumber"]); ?> diff --git a/Views/mission.php b/Views/mission.php index e1dc2ef..4d84777 100644 --- a/Views/mission.php +++ b/Views/mission.php @@ -5,9 +5,9 @@ // Démarrage de la session. session_start(); // Vérification si connecté et si a le statut utilisateur sinon: raise 404 -if (!isset($_SESSION["loggedIn"], $_SESSION["isUser"]) +if (!isset($_SESSION["loggedIn"], $_SESSION["isClient"]) || $_SESSION["loggedIn"] == false - || $_SESSION["isUser"] == false + || $_SESSION["isClient"] == false ) { http_response_code(404); die(); @@ -21,14 +21,14 @@ $_SESSION["src"] = basename(__FILE__, ".php"); <!DOCTYPE html> <?php echo('<html lang="'.$_SESSION["lang"].'">'.PHP_EOL); ?> <head> -<?php require_once(dirname( __FILE__ )."/Includes/incl_header.php"); ?> +<?php require_once(dirname( __FILE__ )."/Includes/incl_global_header.php"); ?> <?php require_once(dirname( __FILE__ )."/Includes/".$_SESSION["lang"]."/title.php"); ?> <?php echo(" <title>".$title[basename(__FILE__, ".php")]."</title>".PHP_EOL); ?> </head> <body> -<?php require_once(dirname( __FILE__ )."/Includes/incl_navbar.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/incl_mission_form.php")?> -<?php require_once(dirname( __FILE__ )."/Includes/incl_footer.php")?> +<?php require_once(dirname( __FILE__ )."/Includes/incl_global_navbar.php"); ?> +<?php require_once(dirname( __FILE__ )."/Includes/incl_form_mission.php"); ?> +<?php require_once(dirname( __FILE__ )."/Includes/incl_global_footer.php"); ?> <script src="/Statics/Js/main.js"></script> </body> </html>
\ No newline at end of file diff --git a/Views/myMission.php b/Views/myMission.php index 0c9b6a7..49d7107 100644 --- a/Views/myMission.php +++ b/Views/myMission.php @@ -5,9 +5,9 @@ // Démarrage de la session. session_start(); // Si n'est pas connecté ou n'est pas consultant: raise 404. -if (!isset($_SESSION["loggedIn"], $_SESSION["isConsultant"]) +if (!isset($_SESSION["loggedIn"], $_SESSION["isPro"]) || $_SESSION["loggedIn"] == false - || $_SESSION["isConsultant"] == false + || $_SESSION["isPro"] == false ) { http_response_code(404); die(); @@ -21,14 +21,14 @@ $_SESSION["src"] = basename(__FILE__, ".php"); <!DOCTYPE html> <?php echo('<html lang="'.$_SESSION["lang"].'">'.PHP_EOL); ?> <head> -<?php require_once(dirname( __FILE__ )."/Includes/incl_header.php"); ?> +<?php require_once(dirname( __FILE__ )."/Includes/incl_global_header.php"); ?> <?php require_once(dirname( __FILE__ )."/Includes/".$_SESSION["lang"]."/title.php"); ?> <?php echo(" <title>".$title[basename(__FILE__, ".php")]."</title>".PHP_EOL); ?> </head> <body> -<?php require_once(dirname( __FILE__ )."/Includes/incl_navbar.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/incl_myMission_table.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/incl_footer.php"); ?> +<?php require_once(dirname( __FILE__ )."/Includes/incl_global_navbar.php"); ?> +<?php require_once(dirname( __FILE__ )."/Includes/incl_table_myMission.php"); ?> +<?php require_once(dirname( __FILE__ )."/Includes/incl_global_footer.php"); ?> <script src="/Statics/Js/main.js"></script> </body> </html>
\ No newline at end of file diff --git a/Views/register.php b/Views/register.php index 3b0605c..5774615 100644 --- a/Views/register.php +++ b/Views/register.php @@ -13,14 +13,14 @@ $_SESSION["src"] = basename(__FILE__, ".php"); <!DOCTYPE html> <?php echo('<html lang="'.$_SESSION["lang"].'">'.PHP_EOL); ?> <head> -<?php require_once(dirname( __FILE__ )."/Includes/incl_header.php"); ?> +<?php require_once(dirname( __FILE__ )."/Includes/incl_global_header.php"); ?> <?php require_once(dirname( __FILE__ )."/Includes/".$_SESSION["lang"]."/title.php"); ?> <?php echo(" <title>".$title[basename(__FILE__, ".php")]."</title>".PHP_EOL); ?> </head> <body> -<?php require_once(dirname( __FILE__ )."/Includes/incl_navbar.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/incl_register_form.php")?> -<?php require_once(dirname( __FILE__ )."/Includes/incl_footer.php")?> +<?php require_once(dirname( __FILE__ )."/Includes/incl_global_navbar.php"); ?> +<?php require_once(dirname( __FILE__ )."/Includes/incl_form_register.php")?> +<?php require_once(dirname( __FILE__ )."/Includes/incl_global_footer.php");?> <script src="/Statics/Js/main.js"></script> </body> </html>
\ No newline at end of file diff --git a/Views/userInfo.php b/Views/userInfo.php index c4e9f8b..0936590 100644 --- a/Views/userInfo.php +++ b/Views/userInfo.php @@ -19,14 +19,14 @@ $_SESSION["src"] = basename(__FILE__, ".php"); <!DOCTYPE html> <?php echo('<html lang="'.$_SESSION["lang"].'">'.PHP_EOL); ?> <head> -<?php require_once(dirname( __FILE__ )."/Includes/incl_header.php"); ?> +<?php require_once(dirname( __FILE__ )."/Includes/incl_global_header.php"); ?> <?php require_once(dirname( __FILE__ )."/Includes/".$_SESSION["lang"]."/title.php"); ?> <?php echo(" <title>".$title[basename(__FILE__, ".php")]."</title>".PHP_EOL); ?> </head> <body> -<?php require_once(dirname( __FILE__ )."/Includes/incl_navbar.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/incl_userInfo_form.php")?> -<?php require_once(dirname( __FILE__ )."/Includes/incl_footer.php")?> +<?php require_once(dirname( __FILE__ )."/Includes/incl_global_navbar.php"); ?> +<?php require_once(dirname( __FILE__ )."/Includes/incl_form_userInfo.php")?> +<?php require_once(dirname( __FILE__ )."/Includes/incl_global_footer.php");?> <script src="/Statics/Js/main.js"></script> </body> </html>
\ No newline at end of file diff --git a/Wrapper/Functions/func_delete.php b/Wrapper/Functions/func_delete.php index 291704d..b118e56 100644 --- a/Wrapper/Functions/func_delete.php +++ b/Wrapper/Functions/func_delete.php @@ -2,9 +2,9 @@ // **************************************************************************** // Description: Fonction de suppréssion d'un utilisateur par son ID // **************************************************************************** -function delete ($id) { +function delete ($userId) { $dbuser = new DbUser; - $deleted = $dbuser->del_user($id); + $deleted = $dbuser->del_user($userId); // Sélection du message à affiché en fonction de réussite ou pas. if ($deleted) { $messageNumber = 0; diff --git a/Wrapper/Functions/func_login.php b/Wrapper/Functions/func_login.php index bb670ba..3966301 100644 --- a/Wrapper/Functions/func_login.php +++ b/Wrapper/Functions/func_login.php @@ -5,6 +5,7 @@ // de caractère aléatoire valable pour une seule tentative. // **************************************************************************** function login($cookie, $email = null, $pass = null, $remember = false) { + print_r($email, $pass); // Instanciation de la gestion de la BDD utilisateur. $dbuser = new DbUser; // On vérifie si la connection se fait via le formulaire de connection ou par cookie diff --git a/Wrapper/Functions/func_mission.php b/Wrapper/Functions/func_mission.php index 8c2d90c..8875685 100644 --- a/Wrapper/Functions/func_mission.php +++ b/Wrapper/Functions/func_mission.php @@ -2,13 +2,13 @@ // **************************************************************************** // Description: Fonction d'enregistrement d'une mission // **************************************************************************** -function register_mission($subject, $note, $review, $userId, $consultantId) { +function register_mission($subject, $note, $review, $clientId, $proId) { $dbuser = new DbUser; $registered = $dbuser->register_mission($subject, $note, $review, - $userId, - $consultantId + $clientId, + $proId ); // Sélection du message à afficher en fonction de réussite ou pas. if ($registered) { diff --git a/Wrapper/Functions/func_register.php b/Wrapper/Functions/func_register.php index 99741a3..6a081a9 100644 --- a/Wrapper/Functions/func_register.php +++ b/Wrapper/Functions/func_register.php @@ -2,13 +2,13 @@ // **************************************************************************** // Description: Fonction d'inscription d'un nouvel utilisateur // **************************************************************************** -function register($email, $password, $is_admin, $is_user, $is_consultant) { +function register($email, $password, $is_client, $is_pro, $is_admin) { $dbuser = new DbUser; $registered = $dbuser->add_user($email, $password, - $is_admin, - $is_user, - $is_consultant + $is_client, + $is_pro, + $is_admin ); // Sélection du message à afficher en fonction de la réussite de l'inscription. if ($registered) { diff --git a/Wrapper/Functions/func_sanitize.php b/Wrapper/Functions/func_sanitize.php index 2821413..cd45c28 100644 --- a/Wrapper/Functions/func_sanitize.php +++ b/Wrapper/Functions/func_sanitize.php @@ -5,7 +5,7 @@ function sanitize($data) { // Retrait des espaces en début et fin de la variable. $trimmed = trim($data); - // Retrait des charactères HTML. + // Retrait des charactères HTML (XSS). $htmlChars = htmlspecialchars($trimmed); return $htmlChars; } diff --git a/Wrapper/wrapper.php b/Wrapper/wrapper.php index 2bdcf32..4a39429 100644 --- a/Wrapper/wrapper.php +++ b/Wrapper/wrapper.php @@ -7,6 +7,7 @@ // pour rediréger tout mes formulaires vers une page unique. // **************************************************************************** // Import de toutes les fonctions et des méthodes pour gérer la BDD. + require_once(dirname( __FILE__ )."/../Database/meth_dbuser.php"); require_once(dirname( __FILE__ )."/../Database/meth_dbsearch.php"); require_once(dirname( __FILE__ )."/Functions/func_info.php"); @@ -19,9 +20,13 @@ require_once(dirname( __FILE__ )."/Functions/func_register.php"); require_once(dirname( __FILE__ )."/Functions/func_language.php"); require_once(dirname( __FILE__ )."/Functions/func_sanitize.php"); session_start(); + // Si la session existe et que la variable src est bien présente. +// Ensuite on redirige en fonction de la varaible "src" de la session +// et on vérifie que la data nécessaire est bien présente. +// Sinon: raise 404 if (isset($_SESSION["src"])) { - // Avant toutes chose on sanitarize la data reçue. + // Avant toutes choses, on nettoie la data reçue. if (isset($_POST)) { foreach ($_POST as $key => $value) { if ($key !== "password") { @@ -29,9 +34,8 @@ if (isset($_SESSION["src"])) { } } } - // Ensuite on redirige en fonction de la varaible "src" de la session - // et on vérifie que la data nécessaire est bien présente. - // Sinon: raise 404 + + // Condition pour une connection if ($_SESSION["src"] == "login" && isset($_POST["email"], $_POST["password"]) && $_POST["email"] !== "" @@ -43,17 +47,23 @@ if (isset($_SESSION["src"])) { $_POST["rememberMe"] = false; } login(0, $_POST["email"], $_POST["password"], $_POST["rememberMe"]); + + // Condition pour une connection auto } elseif ($_SESSION["src"] == "autoLogin" && isset($_COOKIE["autoLogin"]) && $_SESSION["loggedIn"] == false ) { // Si connection par cookie, on le décode avant de le passer à la fonction. login(json_decode(base64_decode($_COOKIE["autoLogin"]))); + + // Condition pour une déconnection } elseif ($_SESSION["src"] == "logout" && isset($_SESSION["loggedIn"]) && $_SESSION["loggedIn"] == true ) { logout(); + + // Condition pour une inscription } elseif ($_SESSION["src"] == "register" && isset($_POST["email"], $_POST["password"] @@ -61,69 +71,77 @@ if (isset($_SESSION["src"])) { && $_POST["email"] !== "" && $_POST["password"] !== "" ) { - if (isset($_POST["is_admin"]) && $_POST["is_admin"] == "on") { - $_POST["is_admin"] = 1; + if (isset($_POST["is_client"]) && $_POST["is_client"] == "on") { + $_POST["is_client"] = 1; } else { - $_POST["is_admin"] = 0; + $_POST["is_client"] = 0; } - if (isset($_POST["is_user"]) && $_POST["is_user"] == "on") { - $_POST["is_user"] = 1; + if (isset($_POST["is_pro"]) && $_POST["is_pro"] == "on") { + $_POST["is_pro"] = 1; } else { - $_POST["is_user"] = 0; + $_POST["is_pro"] = 0; } - if (isset($_POST["is_consultant"]) && $_POST["is_consultant"] == "on") { - $_POST["is_consultant"] = 1; + if (isset($_POST["is_admin"]) && $_POST["is_admin"] == "on") { + $_POST["is_admin"] = 1; } else { - $_POST["is_consultant"] = 0; + $_POST["is_admin"] = 0; } register($_POST["email"], $_POST["password"], - $_POST["is_admin"], - $_POST["is_user"], - $_POST["is_consultant"] + $_POST["is_client"], + $_POST["is_pro"], + $_POST["is_admin"] ); + + // Condition pour une modification des infos } elseif ($_SESSION["src"] == "userInfo" - && isset($_SESSION["loggedIn"], $_SESSION["id"], + && isset($_SESSION["loggedIn"], $_SESSION["userId"], $_POST["lastname"], $_POST["firstname"], $_POST["job"], $_POST["degree"], $_POST["capability"], $_POST["description"], $_POST["phoneNumber"], $_POST["adress"], $_POST["zipCode"], $_POST["city"] ) - && $_SESSION["loggedIn"] == true && $_SESSION["id"] !== "" + && $_SESSION["loggedIn"] == true && $_SESSION["userId"] !== "" && $_POST["lastname"] !== "" && $_POST["firstname"] !== "" ) { modify_user_info($_POST["lastname"], $_POST["firstname"], $_POST["job"], $_POST["degree"], $_POST["capability"], $_POST["description"], $_POST["phoneNumber"], $_POST["adress"], $_POST["zipCode"], - $_POST["city"], $_SESSION["id"] + $_POST["city"], $_SESSION["userId"] ); + + // Condition pour une suppression d'un utilisateur } elseif ($_SESSION["src"] == "delete" && isset($_SESSION["loggedIn"], $_SESSION["isAdmin"], - $_POST["id"] + $_POST["userId"] ) && $_SESSION["loggedIn"] == true && $_SESSION["isAdmin"] == true - && $_POST["id"] !== "" + && $_POST["userId"] !== "" ) { - delete($_POST["id"]); + delete($_POST["userId"]); + + // Condition pour un enregistrement d'une mission } elseif ($_SESSION["src"] == "mission" - && isset($_SESSION["loggedIn"], $_SESSION["isUser"], + && isset($_SESSION["loggedIn"], $_SESSION["isClient"], $_POST["subject"], $_POST["note"], - $_POST["review"], $_POST["consultantId"] + $_POST["review"], $_POST["proId"] ) && $_SESSION["loggedIn"] == true - && $_SESSION["isUser"] == true + && $_SESSION["isClient"] == true && $_POST["subject"] !== "" && $_POST["note"] !== "" && $_POST["review"] !== "" - && $_POST["consultantId"] !== "" + && $_POST["proId"] !== "" ) { register_mission($_POST["subject"], $_POST["note"], $_POST["review"], - $_SESSION["id"], - $_POST["consultantId"] + $_SESSION["userId"], + $_POST["proId"] ); + + // Condition pour une recherche } elseif ($_SESSION["src"] == "index" && (isset($_POST["search"]) && $_POST["search"] !== "") || (isset($_POST["searchInfo"]) && $_POST["searchInfo"] !== "") @@ -133,14 +151,19 @@ if (isset($_SESSION["src"])) { } else { search($_POST["searchInfo"], false); } + + // Condition pour le changement de la langue } elseif (isset($_SESSION["src"], $_POST["langSel"]) && ($_POST["langSel"] == "en" || $_POST["langSel"] == "fr") ) { set_language($_POST["langSel"]); + + // Enfin, si requete invalide } else { http_response_code(404); die(); } + } else { http_response_code(404); die(); @@ -34,15 +34,15 @@ if (isset($_COOKIE["autoLogin"]) && $_SESSION["loggedIn"] == false) { <!DOCTYPE html> <?php echo('<html lang="'.$_SESSION["lang"].'">'.PHP_EOL); ?> <head> -<?php require_once(dirname( __FILE__ )."/Views/Includes/incl_header.php"); ?> +<?php require_once(dirname( __FILE__ )."/Views/Includes/incl_global_header.php"); ?> <?php require_once(dirname( __FILE__ )."/Views/Includes/".$_SESSION["lang"]."/title.php"); ?> <?php echo(" <title>".$title[basename(__FILE__, ".php")]."</title>".PHP_EOL); ?> </head> <body> -<?php require_once("./Views/Includes/incl_navbar.php"); ?> +<?php require_once("./Views/Includes/incl_global_navbar.php"); ?> <?php require_once("./Views/Includes/incl_index_slideshow.php"); ?> <?php require_once("./Views/Includes/incl_index_search.php");?> -<?php require_once("./Views/Includes/incl_footer.php"); ?> +<?php require_once("./Views/Includes/incl_global_footer.php"); ?> <script src="/Statics/Js/main.js"></script> <!-- Activation du slider --> <script>start_slideshow();</script> |
