diff --git a/app/controller/ConnexionController.php b/app/controller/ConnexionController.php
new file mode 100644
index 0000000000000000000000000000000000000000..25b409020378db4cf65e90ec8cf34bfb35535593
--- /dev/null
+++ b/app/controller/ConnexionController.php
@@ -0,0 +1,37 @@
+<?php
+
+class ConnexionController extends Controller { // classe de contrôleur pour l'affichage des profils
+	public function displayValid() { // la fonction d'affichage
+		//$slug = $this->route["params"]["slug"]; // on récupère le "slug", en gros tout le reste de l'URL qui n'a pas encore servi
+		
+		//$this->view->profil = Profil::getFromSlug($slug); // on utilise le modèle pour aller chercher en BDD le profil qui nous intéresse
+		$this->view->display(); // on affiche ce profil
+	}
+	
+	public function displayForm() { // la fonction d'affichage
+		$this->view->display(); // on affiche ce profil
+	}
+	
+	public function verify() { // vérifie que les identifiants sont valides par rapport à la BDD
+		// méthode basique avec un stockage de mdp en clair, ce qu'on ne fera bien sûr pas !
+		if(!isset($_POST['login']) || !isset($_POST['password'])) { // si l'une des données manque, erreur
+			//appeler une fonction d'erreur
+			echo "<h1>Erreur : variables absentes</h1>";
+			die();
+		}
+		
+		$pseudo = $_POST['login'];
+		$password = $_POST['password'];
+		
+		$result = Connexion::check($pseudo, $password); // vérifie si existe en base et a bon mdp
+		if($result == 1) { // connexion valide
+			header('Location:valid'); // on redirige vers la  page OK
+		}
+		else {
+			session_start(); // on démarre une session pour avoir accès aux variables superglobales de session
+			$_SESSION["connexionErrCode"] = $result; // on stocke le code d'erreur 
+			header('Location:../connexion'); // on redirige vers la page de formulaire (il faut faire un retour dans le dossier parent pour que ça fonctionne, ne me demandez pas pourquoi !)
+		}
+	}
+	
+}
diff --git a/app/kernel/Router.php b/app/kernel/Router.php
index 94551ec06257ba7957efcc0d1a2b26888e129495..d300f87176a63143b1be10f1a653028059b9274b 100644
--- a/app/kernel/Router.php
+++ b/app/kernel/Router.php
@@ -42,7 +42,14 @@ class Router { // classe PHP permettant l'analyse de l'URL des requêtes
 			else if($parts[0] == "connexion" && count($parts) == 1) { // formulaire de connexion
 				$result["controller"] = "Connexion"; // le contrôleur à instancier sera "ProfilController", on met donc "Profil" dans la variable de résultat
 				$result["action"] = "displayForm"; // "displayForm" pour afficher le formulaire
-				
+			}
+			else if($parts[0] == "connexion" && count($parts) == 2 && $parts[1] == "valid") { // connexion réussie
+				$result["controller"] = "Connexion"; // le contrôleur à instancier sera "ProfilController", on met donc "Profil" dans la variable de résultat
+				$result["action"] = "displayValid"; // "displayForm" pour afficher le formulaire
+			}
+			else if($parts[0] == "connexion" && count($parts) == 2 && $parts[1] == "verify") { // connexion réussie
+				$result["controller"] = "Connexion"; // le contrôleur à instancier sera "ProfilController", on met donc "Profil" dans la variable de résultat
+				$result["action"] = "verify"; // "displayForm" pour afficher le formulaire
 			}
 			// à chaque fois qu'on crée une nouvelle page, il faut rajouter un cas à cet endroit !
 			
diff --git a/app/model/Connexion.php b/app/model/Connexion.php
new file mode 100644
index 0000000000000000000000000000000000000000..e48781bc7ccc41b5b06b934aee2c753089398e0f
--- /dev/null
+++ b/app/model/Connexion.php
@@ -0,0 +1,33 @@
+<?php
+
+class Connexion extends Model { // classe de modèle pour l'affichage de profils
+	public $useless; // on définit les attributs de la classe
+	
+	public static function check($pseudo, $pass) { // méthode permettant de vérifier la validité d'identifiants d'un membre dans la BDD
+		// renvoie 1 si le membre existe et que son mot de passe correspond
+		// renvoie 2 si le mot de passe est faux
+		// renvoie 0 si le membre n'existe pas
+		
+		$db = Database::getInstance(); // on récupère la connexion à la BDD
+		$sql = "SELECT password FROM profils WHERE pseudo = :pseudo";
+		$req = $db->prepare($sql); // on prépare la requête
+		//$req->setFetchMode(PDO::FETCH_CLASS, "Profil");  // règle le type dans lequel on doit mettre les données (PDO va chercher les attributs de la classe de même nom que ses colonnes de BDD et mettre dedans les valeurs correspondantes)
+		$req->execute(array(":pseudo" => $pseudo)); // on remplace les variables dans la requête
+		
+		$return = 0; //valeur par défaut
+		if($result = $req->fetch()) { // on récupère l'enregistrement, s'il existe
+			if($result['password'] == $pass) { // si les mdp correspondent, alors c'est bon
+				$return = 1;
+			}
+			else { // sinon, il y a ppb dans les mdp
+				$return = 2;
+			}
+		}
+		
+		return $return;
+	}
+	
+}
+
+
+
diff --git a/app/view/connexion/display.html b/app/view/connexion/display.html
new file mode 100644
index 0000000000000000000000000000000000000000..19619ccaad38ed45366ce09d1997a329c132491c
--- /dev/null
+++ b/app/view/connexion/display.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8"/>
+	<title>Exemple de profil</title>
+	<base href="http://localhost/projet-web-2016/www/"/>
+</head>
+<body>
+	<header>
+		<h1>Affichage d'un profil</h1>
+	</header>
+	<h2>Voici le profil de quelqu'un</h2>
+	<h3>Il s'agit du profil de <?php echo $this->profil->pseudo; ?></h3>
+	<p>Et on dit "Bonjour <?php echo $this->profil->pseudo; ?> ! :o)</p>
+	<p>Il a été appelé avec le slug : <?php echo $this->profil->slug; ?></p>
+	<footer>
+		<p>Le pied de page</p>
+	</footer>
+</body>
+</html>
diff --git a/app/view/connexion/displayForm.html b/app/view/connexion/displayForm.html
new file mode 100644
index 0000000000000000000000000000000000000000..7bf2c283b5740c5c6248f2c147210a44b0d3b4dc
--- /dev/null
+++ b/app/view/connexion/displayForm.html
@@ -0,0 +1,28 @@
+<?php session_start(); ?>
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8"/>
+	<title>Formulaire de connexion</title>
+	<base href="http://localhost/projet-web-2016/www/"/>
+</head>
+<body>
+	<header>
+		<h1>Connexion au site</h1>
+	</header>
+	<?php if(isset($_SESSION['connexionErrCode'])) { // si message d'erreur
+		$errCode = $_SESSION['connexionErrCode'];
+		$errMsg = ($errCode == 0) ? '<h3 style="color:red;">Identifiant inconnu !</h3>' : '<h3 style="color:red;">Mauvais mot de passe !</h3>'; // on détermine le message à afficher
+		echo $errMsg; // on affiche le message
+		unset($_SESSION['connexionErrCode']); // on retire la variable de session
+	} ?>
+	<form method="post" action="connexion/verify">
+		<label for="login">Login : </label><input type="text" name="login" id="login" /><br/>
+		<label for="password">Password : </label><input type="password" name="password" id="password" /><br/>
+		<input type="submit" value="Connexion" />
+	</form>
+	<footer>
+		<p>Le pied de page</p>
+	</footer>
+</body>
+</html>
diff --git a/app/view/connexion/displayValid.html b/app/view/connexion/displayValid.html
new file mode 100644
index 0000000000000000000000000000000000000000..2be853cdd3125e1cad99fcba1f46d339d8bd5e60
--- /dev/null
+++ b/app/view/connexion/displayValid.html
@@ -0,0 +1,17 @@
+<?php session_start(); ?>
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8"/>
+	<title>Connexion réussie</title>
+	<base href="http://localhost/projet-web-2016/www/"/>
+</head>
+<body>
+	<header>
+		<h1 style="color:green;">Vos identifiants sont corrects !</h1>
+	</header>
+	<footer>
+		<p>Le pied de page</p>
+	</footer>
+</body>
+</html>
diff --git a/app/view/index/display.html b/app/view/index/display.html
index 942564c3aaa0c6d367c71f75b2448b20b5263b03..c0ec00cb86e39ae1b0c8a7b36581de27a4c0e29b 100644
--- a/app/view/index/display.html
+++ b/app/view/index/display.html
@@ -34,6 +34,9 @@
 		<li><a href="classement/jeu/random">Classement pour un jeu spécifique</a></li>
 	</ul>
 	
+	<h2 style="margin-bottom:-4px;"><a href="connexion">Connexion</a></h2>
+	<em>(plein de modifs à venir !)</em>
+	
 	<footer>
 		<p>Pied de page...</p>
 	</footer>