diff --git a/app/controller/ContactController.php b/app/controller/ContactController.php new file mode 100644 index 0000000000000000000000000000000000000000..8942bf0507aee41ad13e9e912c6fe204a26fbcbe --- /dev/null +++ b/app/controller/ContactController.php @@ -0,0 +1,62 @@ +<?php +class ContactController extends Controller { // classe de contrôleur pour l'inscription au site + + public function displayValid() { // la fonction d'affichage du formulaire + $this->view->display(); + } + + public function displayForm() { // la fonction d'affichage du formulaire + $this->view->display(); + } + + public function send() { // vérifie les données de contact + if(!isset($_POST['nom']) || !isset($_POST['prenom']) || !isset($_POST['email']) || !isset($_POST['message'])) { // si l'une des données manque, erreur + //appeler une fonction d'erreur + echo "<h1>Erreur : variables absentes</h1>"; + die(); + } + $data = $_POST; + + if($data['nom'] == "") { + session_start(); // on démarre une session pour avoir accès aux variables superglobales de session + $_SESSION["contactErrCode"] = 2; // on stocke le code d'erreur + header('Location:../contact'); // on redirige vers la page de formulaire (il faut faire un retour dans le dossier parent pour que ça fonctionne) + } + if($data['prenom'] == "") { + session_start(); // on démarre une session pour avoir accès aux variables superglobales de session + $_SESSION["contactErrCode"] = 3; // on stocke le code d'erreur + header('Location:../contact'); // on redirige vers la page de formulaire (il faut faire un retour dans le dossier parent pour que ça fonctionne) + } + if(!preg_match("#^[a-z0-9._-]+(@|%40)[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $data['email'])) { + session_start(); // on démarre une session pour avoir accès aux variables superglobales de session + $_SESSION["contactErrCode"] = 4; // on stocke le code d'erreur + header('Location:../contact'); // on redirige vers la page de formulaire (il faut faire un retour dans le dossier parent pour que ça fonctionne) + } + if($data['message'] == null) { + session_start(); // on démarre une session pour avoir accès aux variables superglobales de session + $_SESSION["contactErrCode"] = 5; // on stocke le code d'erreur + header('Location:../contact'); // on redirige vers la page de formulaire (il faut faire un retour dans le dossier parent pour que ça fonctionne) + } + + $sender = $data['prenom']; + if($data['pseudo'] != "") $sender .= " '".$data['pseudo']."'"; + $sender .= " ".$data['nom']; + + $header = "From: \"".$sender."\"<".$data['email'].">\n"; + $header.= "Reply-to: \"".$sender."\"<".$data['email'].">\n"; + $header.= "MIME-Version: 1.0\n"; + + $success = mail( + "vbochet@gmail.com", // adresse email du destinataire + "Message envoyé via Classements Ludiques", // objet du mail + htmlspecialchars($data['message']), // message du mail + $header);// on réalise l'inscription à l'aide d'une méthode de la classe Register + if ($success == 1) { + header('Location:valid'); // on redirige vers la page OK + } + else { + echo "<h1>Erreur : l'envoi du mail a échoué</h1>"; + } + } + +} diff --git a/app/kernel/Router.php b/app/kernel/Router.php index 5c06efa7f5b2aaa932902bdbd08c98966546b367..81c9f6e02c3826e05260f5c018ed726dd9298717 100644 --- a/app/kernel/Router.php +++ b/app/kernel/Router.php @@ -55,8 +55,8 @@ class Router $result["action"] = "displayRequestValid"; // il n'y a pas de paramètres attendus, on n'affecte pas $result["params"] } - - /*** consultation des profils ***/ + + /*** consultation des profils ***/ else if($parts[0] == "profil" && count($parts) == 2) { // consultation d'un profil : 2 morceaux (profil/pseudoDeLaPersonne) $result["controller"] = "Profil"; $result["action"] = "display"; @@ -87,7 +87,7 @@ class Router $result["params"]["slug"] = $result["params"]["slug"].'/'.$parts[$k]; } } - + /*** connexion au site ***/ else if($parts[0] == "connexion" && count($parts) == 1) { // formulaire de connexion $result["controller"] = "Connexion"; @@ -124,7 +124,22 @@ class Router $result["action"] = "save"; // "save" pour appeler la méthode d'enregistrement dans la BDD } - /*** Ajout de partie ***/ + /*** contact au site ***/ + else if($parts[0] == "contact" && count($parts) == 1) { // formulaire de connexion + $result["controller"] = "Contact"; + $result["action"] = "displayForm"; // "displayForm" pour afficher le formulaire + } + else if($parts[0] == "contact" && count($parts) == 2 && $parts[1] == "valid") { // connexion réussie + $result["controller"] = "Contact"; + $result["action"] = "displayValid"; // "displayValid" pour afficher la page avec le message de réussite + } + else if($parts[0] == "contact" && count($parts) == 2 && $parts[1] == "send") { // réalisation de l'inscription dans la BDD + $result["controller"] = "Contact"; + $result["action"] = "send"; // "save" pour appeler la méthode d'enregistrement dans la BDD + } + + + /*** Ajout de partie ***/ else if ($parts[0] == "add_partie" && count($parts) == 1) { $result["controller"] = "Partie"; $result["action"] = "displayStep0"; diff --git a/app/view/Contact/displayForm.html b/app/view/Contact/displayForm.html new file mode 100644 index 0000000000000000000000000000000000000000..be0b9b6a50155dc16fc6513e84764c819bfc94b4 --- /dev/null +++ b/app/view/Contact/displayForm.html @@ -0,0 +1,95 @@ +<?php + session_start(); + + $page_title = "Formulaire de contact"; + include(ROOT."/app/view/Includes/header.include.html"); +?> + + + <?php + if(isset($_SESSION['contactErrCode'])) { // si message d'erreur + $errCode = $_SESSION['contactErrCode']; + if($errCode == 2) { // on détermine le message + $errMsg = '<h3>Veuillez indiquer votre nom !</h3>'; + } + elseif($errCode == 3) { + $errMsg = '<h3>Veuillez indiquer votre prénom !</h3>'; + } + elseif($errCode == 4) { + $errMsg = '<h3>Veuillez indiquer une adresse mail valide !</h3>'; + } + elseif($errCode == 5) { + $errMsg = '<h3>Veuillez indiquer votre message !</h3>'; + } + echo '<article class="msg-erreur">'.$errMsg.'</article>'; // on affiche le message + unset($_SESSION['contactErrCode']); // on retire la variable de session + } + ?> + + + <article> + <h2>Formulaire de contact</h2> + <div class="inscription-form"> + <form method="post" action="contact/send" enctype="multipart/form-data" onsubmit="return checkForm();"> + + <div class="form-line"> + <div class="validation-container-left"> + <label for="pseudo">Pseudo : </label> + <input type="text" name="pseudo" id="pseudo" /> + </div> + </div> + <div class="form-line"> + <div class="validation-container-left"> + <label for="nom">Nom* : </label> + <input type="text" required="" name="nom" id="nom" /> + </div> + <div class="validation-container"> + <span id="rsp_nom" class="validation-container-content"></span> + <input type="checkbox" disabled name="valid_nom" class="validation-checkbox" /> + </div> + </div> + <div class="form-line"> + <div class="validation-container-left"> + <label for="prenom">Prénom* : </label> + <input type="text" required="" name="prenom" id="prenom" /> + </div> + <div class="validation-container"> + <span id="rsp_prenom" class="validation-container-content"></span> + <input type="checkbox" disabled name="valid_prenom" class="validation-checkbox" /> + </div> + </div> + <div class="form-line"> + <div class="validation-container-left"> + <label for="email">Adresse e-mail* : </label> + <input type="email" required="" name="email" id="email" onchange="if(this.value != '') checkEmail(this.value, this.id);" /> + </div> + <div class="validation-container"> + <span id="rsp_email" class="validation-container-content"></span> + <input type="checkbox" disabled name="valid_email" class="validation-checkbox" /> + </div> + </div> + <div class="form-line"> + <div class="validation-container-left"> + <label for="description">Votre message* : </label> + <textarea required="" name="message" id="message"></textarea> + </div> + <div class="validation-container"> + <span id="rsp_message" class="validation-container-content"></span> + <input type="checkbox" disabled name="valid_message" class="validation-checkbox" /> + </div> + </div> + <div class="submit"> + <input type="reset" name="reset" value="Réinitialiser"> + <input type="submit" name="submit" value="Envoyer"> + </div> + </form> + </div> + </article> + + + + <script type="text/javascript" src="<?php echo BASE_URL; ?>/js/jquery.min.js"></script> + <script type="text/javascript" src="<?php echo BASE_URL; ?>/js/verif_form_contact.js"></script> + + +<?php include(ROOT."/app/view/Includes/footer.include.html"); ?> diff --git a/app/view/Contact/displayValid.html b/app/view/Contact/displayValid.html new file mode 100644 index 0000000000000000000000000000000000000000..d919b943c6e438cb8b89b27f49a2319f3430d939 --- /dev/null +++ b/app/view/Contact/displayValid.html @@ -0,0 +1,11 @@ +<?php + $page_title = "Message envoyé"; + include(ROOT."/app/view/Includes/header.include.html"); +?> + + <article class="msg-valide"><h2>Votre message a été envoyé !</h2></article> + <article> + <p>Vous pouvez continuer à naviguer sur notre site. :)</p> + </article> + +<?php include(ROOT."/app/view/Includes/footer.include.html"); ?> diff --git a/www/js/verif_form_contact.js b/www/js/verif_form_contact.js new file mode 100644 index 0000000000000000000000000000000000000000..437dcb78990724c5d5a39f3e2cef9efd2a3a65ad --- /dev/null +++ b/www/js/verif_form_contact.js @@ -0,0 +1,43 @@ +function checkEmail(value, target) { + var regex = /^[a-z0-9._-]+(@|%40)[a-z0-9._-]{2,}\.[a-z]{2,4}$/; + var success = regex.test(value); + + if (success) { + //validation OK + $('#rsp_'+target).text("Ok"); + $('#rsp_'+target).parent().css("display","none"); + $('input[name="valid_'+target+'"]').prop('checked',true); + } + else { + //invalidation + $('#rsp_'+target).text("Format invalide"); + $('#rsp_'+target).parent().css("display","flex"); + $('input[name="valid_'+target+'"]').prop('checked',false); + $('#'+target).focus(); + } +} + +function checkForm() { + if($('#nom').val() == "") { + alert("Veuillez entrer votre nom dans le formulaire"); + $('#nom').focus(); + return false; + } + if($('#prenom').val() == "") { + alert("Veuillez entrer votre prénom dans le formulaire"); + $('#prenom').focus(); + return false; + } + if($('#email').val() == "" || !$('input[name="valid_email"]').is(':checked')) { + alert("Veuillez indiquer une adresse e-mail valide"); + $('#email').focus(); + return false; + } + if($('#message').val() == "") { + alert("Veuillez entrer votre message"); + $('#message').focus(); + return false; + } + + return true; +}