diff options
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> |
