diff --git a/app/controller/RegisterController.php b/app/controller/RegisterController.php index ac92392528c143d9ee9c4d95008385f0d95b2c3b..b3b922c2f2b97c10345c984514c1cd02527f6f5a 100644 --- a/app/controller/RegisterController.php +++ b/app/controller/RegisterController.php @@ -10,7 +10,89 @@ class RegisterController extends Controller { // classe de contrôleur pour l'in $this->view->display(); } - public function verify() { // vérifie si le login est disponible + public function verify() { // vérifie si les données envoyées sont valides + if(!isset($_POST['method']) || !isset($_POST['value'])) { // si l'une des données manque, erreur + //appeler une fonction d'erreur + echo "<h1>Erreur : données absentes</h1>"; + die(); + } + + $method = $_POST['method']; + $value = $_POST['value']; + + $passed = false; + $retval = ''; + switch($method) { + case 'checkPseudo': + // vérifie que le pseudo est libre + $slug_joueur = self::slugify($value); + if(Register::checkPseudo($slug_joueur)) { + $passed = true; + $retval = "Pseudo valide"; + } + else { + $passed = false; + $retval = "Déjà utilisé"; + } + break; + + case 'checkPassword': + //if(preg_match("#^[a-z0-9._-]+(@|%40)[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $value)) { + $passed = true; + $retval = "Mdp valide"; + //} + //else { + // $passed = false; + // $retval = "Mdp invalide"; + //} + break; + + case 'checkPaswordBis': + $mdp = explode("¤", $value); + if($mdp[0]==$mdp[1]) { + $passed = true; + $retval = "Mdp valide"; + } + else { + $passed = false; + $retval = "Mdp différents"; + } + break; + + case 'checkEmail': + if(preg_match("#^[a-z0-9._-]+(@|%40)[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $value)) { + // deuxième test : le mail est il déjà utilisé ? + //$value = str_replace("%40", "@", $value); // on corrige le "%40" en "@" pour vérifier l'existence + if(Register::checkEmail($value)) { + $passed = true; + $retval = "E-mail valide"; + } + else { + $passed = false; + $retval = "Déjà utilisé"; + } + } + else { + $passed = false; + $retval = "Format invalide"; + } + break; + + default: exit; + } + + if($passed) { + // set the message colour to green and the checkbox to checked + echo '{"success":true, "text":"'.$retval.'", "color":"green"}'; + + } + else { + // set the message colour to red, the checkbox to unchecked and focus back on the field + echo '{"success":false, "text":"'.$retval.'", "color":"red"}'; + } + } + + public function save() { // vérifie les données d'inscription, et enregistre les infos dans la BDD if(!isset($_POST['pseudo']) || !isset($_POST['password']) || !isset($_POST['nom']) || !isset($_POST['prenom']) || !isset($_POST['email'])) { // si l'une des données manque, erreur //appeler une fonction d'erreur echo "<h1>Erreur : variables absentes</h1>"; diff --git a/app/kernel/Router.php b/app/kernel/Router.php index 8f657f08f64567055d54495a7ada1751c0594320..7f8698becd816a8f390111802edb41746eb00bc8 100644 --- a/app/kernel/Router.php +++ b/app/kernel/Router.php @@ -84,10 +84,14 @@ class Router { // classe PHP permettant l'analyse de l'URL des requêtes $result["controller"] = "Register"; $result["action"] = "displayValid"; // "displayValid" pour afficher la page avec le message de réussite } - else if($parts[0] == "inscription" && count($parts) == 2 && $parts[1] == "verify") { // vérification de la validité de l'inscription + else if($parts[0] == "inscription" && count($parts) == 2 && $parts[1] == "verify") { // vérification de la validité des champs $result["controller"] = "Register"; $result["action"] = "verify"; // "verify" pour appeler la méthode de vérification } + else if($parts[0] == "inscription" && count($parts) == 2 && $parts[1] == "save") { // réalisation de l'inscription dans la BDD + $result["controller"] = "Register"; + $result["action"] = "save"; // "save" pour appeler la méthode d'enregistrement dans la BDD + } /*** Ajout de partie ***/ else if($parts[0] == "add_partie" && count($parts) == 1){ // formulaire d'ajout de partie diff --git a/app/model/Register.php b/app/model/Register.php index 146b0695f1e1ead660b7eaee23eeb33bdb7b91e3..f9141cbe7514304dee7e8a47afc7883d58a2c412 100644 --- a/app/model/Register.php +++ b/app/model/Register.php @@ -1,6 +1,34 @@ <?php class Register extends Model { // classe de modèle pour l'inscription + public static function checkPseudo($slug_joueur) { // méthode permettant de vérifier si un pseudo est libre + + $db = Database::getInstance(); // on récupère la connexion à la BDD + $sql = "SELECT * FROM R_joueur WHERE slug = :slug"; + $req = $db->prepare($sql); // on prépare la requête + $req->execute(array(":slug" => $slug_joueur)); // on remplace les variables dans la requête + + if($result = $req->fetch()) { // si un enregistrement existe en BDD, on retourne 0 + return 0; + } + + return 1; // sinon : OK -> on retourne 1 + } + + public static function checkEmail($email) { // méthode permettant de vérifier si un pseudo est libre + + $db = Database::getInstance(); // on récupère la connexion à la BDD + $sql = "SELECT * FROM R_joueur WHERE email = :email"; + $req = $db->prepare($sql); // on prépare la requête + $req->execute(array(":email" => $email)); // on remplace les variables dans la requête + + if($result = $req->fetch()) { // si un enregistrement existe en BDD, on retourne 0 + return 0; + } + + return 1; // sinon : OK -> on retourne 1 + } + public static function check($slug_joueur, $email) { // méthode permettant de vérifier si un compte-joueur est libre // OK si personne avec même pseudo ou même adresse mail n'existe dans la BDD // renvoie 1 si le compte est libre (= n'existe pas)