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;
+}