diff --git a/README.md b/README.md
index 68e558ef52969aa8bd8eca1842a94a96d12bdd53..86348ee580db97ac3e396bfca903925f7b459283 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,47 @@
 # PIMA-GROUPE-15
 
-Développement d'une plate-forme de vote d'images populaires.
\ No newline at end of file
+Développement d'une plate-forme de vote d'images populaires.
+
+## UTILISATION
+
+### AVANT UTILISATION
+
+Cloner le projet dans le répertoire /var/www/html/ (ubuntu 16.04)
+Modifier la définition de DB_USERNAME et DB_PASSWORD dans /config/config_db.php par vos username et mot de passe phpmyadmin. (Pour se connecter: adresse email:jean.martin@gmail.com et mdp:0000)
+Importer la base de données pima.sql depuis phpmyadmin.
+
+### UTILISATION
+
+Aller à l'adresse localhost/PIMA-GROUPE-15/ depuis un navigateur.
+
+## ARCHITECTURE
+
+### CONFIG
+
+Dossier dans lequel se trouve définies toutes les constantes utiles.
+Dans config.php    : les constantes de base correspondant principalement aux différents repertoires/pages
+Dans config_db.php : les constantes relatives à la base de données
+
+### COMMUN
+
+Dans le dosser commun se trouve les éléments qui ne se rapporte pas directement à une page web.
+Dans DB.class.php  : classe permettant d'intéragir avec la base de données
+Dans func_commun   : fonctions communes et usuelles
+
+### VUE
+
+Dans le dossier vue se trouve les élements de génération  et visuels d'une page.
+page_to_load.php   : permet la mise en relation de des parties model, vue et controleur
+404.php            : page à renvoyer lorsque la page demandée n'a pas été trouvée
+index.php          : fichier de redirection et de chargement des constantes de base
+*nom_de_page*.php  : fichier correspondant à la partie visuelle de la page *nom de page*
+
+### CONTROLEUR
+
+Dans le dossier controleur se trouve les élements de traitement et modication des données.
+*nom_de_page*.php  : traitement des données associées à la page *nom_de_page* 
+
+### MODEL
+
+Dans le dossier model se trouve les éléments d'intéraction avec la base de données spécifiques à une page.
+*nom_de_page*.php  : intéractions avec la base de données nécessaires pour le traiment des données de la page *nom_de_page*
diff --git a/commun/DB.class.php b/commun/DB.class.php
new file mode 100644
index 0000000000000000000000000000000000000000..ab2b99dbb8df9bbe6b6e96f17dc05ef5f5d63e77
--- /dev/null
+++ b/commun/DB.class.php
@@ -0,0 +1,37 @@
+<?php
+
+require_once(PATH_CONFIG."config_db.php");
+
+class DB 
+{
+    protected static function connect() {
+        try {
+            $connexion = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD, array(PDO::ATTR_PERSISTENT => true, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
+        } catch (PDOException $e) {
+            die("Connection failed: " . $e->getMessage());
+        }
+        return $connexion;
+    }
+
+    protected static function disconnect(&$connexion) {
+        $connexion = "";
+    }
+
+    //Permet de faire une requête SQL renvoie un tableau du type 
+    //array([0]=>array([attribut]=>[val_atribut_1]...),...,[n]=>array([attribut]=>[val_atribut_n]...))
+    public static function query($req) {
+        $bdd = DB::connect();
+        if ($query = $bdd->query($req)) {
+            return $query->fetchAll(PDO::FETCH_ASSOC);
+        }
+        return false;
+    }
+    //Permet d'executer une requête SQL,renvoie false en cas d'erreur
+    public static function execute($req) {
+        $bdd = DB::connect();
+        if ($query = $bdd->exec($req))
+            return $query;
+        return false;
+    }
+}
+?>
diff --git a/commun/func_commun.php b/commun/func_commun.php
new file mode 100644
index 0000000000000000000000000000000000000000..8343be19c4cbb79f202ecc5aa9c136acc55659da
--- /dev/null
+++ b/commun/func_commun.php
@@ -0,0 +1,17 @@
+<?php
+function secure($val) {
+    return htmlspecialchars(trim($val));
+}
+
+function _hash($val){
+	return hash('sha256',$val);
+}
+
+function getUserId(){
+	return $_SESSION['id'];
+}
+
+function getUserFName(){
+	return $_SESSION['prenom'];
+}
+?>
\ No newline at end of file
diff --git a/config/config.php b/config/config.php
new file mode 100644
index 0000000000000000000000000000000000000000..723056379d4d002ff02f0f8651720f6d5fd480fb
--- /dev/null
+++ b/config/config.php
@@ -0,0 +1,11 @@
+<?php
+//chemin 
+define("PATH_VUE","../vue/");
+define("PATH_CONTROLEUR","../controleur/");
+define("PATH_MODEL","../model/");
+define("PATH_COMMUN","../commun/");
+define("PATH_CONFIG","../config/");
+//page
+define("DEFAULT_PAGE","accueil");
+define("LOGIN_PAGE","login");
+?>
\ No newline at end of file
diff --git a/config/config_db.php b/config/config_db.php
new file mode 100644
index 0000000000000000000000000000000000000000..5d1e63343b48920d8e5cb34a29d90dface915caa
--- /dev/null
+++ b/config/config_db.php
@@ -0,0 +1,5 @@
+<?php
+	define("DB_DSN","mysql:host=localhost;dbname=pima;charset=utf8");
+    define("DB_USERNAME","root"); // à compléter
+    define("DB_PASSWORD","mdp"); // à compléter
+?>
diff --git a/controleur/login.php b/controleur/login.php
new file mode 100644
index 0000000000000000000000000000000000000000..9467d519b9ac7b51dc0606863880512a5f1e721b
--- /dev/null
+++ b/controleur/login.php
@@ -0,0 +1,23 @@
+<?php
+function init_session($info){
+	$_SESSION["id"]=$info["id"];
+	$_SESSION["prenom"]=$info["prenom"];
+}
+
+$msg="";
+if (isset($_POST["email"],$_POST["mdp"])){
+	//récupération des données saisies
+	$email=secure($_POST["email"]);
+	$mdp=_hash(secure($_POST["mdp"]));
+	//vérification de leur validité
+	if ($info=verify($email,$mdp)){
+		init_session($info[0]);
+		header("Location:index.php?page=accueil");
+	}
+	//création d'un message d'erreur
+	else{
+		$msg="Mot de passe ou adresse email incorrect(s)";
+	}
+}
+
+?>
\ No newline at end of file
diff --git a/index.php b/index.php
new file mode 100644
index 0000000000000000000000000000000000000000..f36ff3e108e0f23c0e2430e68885909c571887b6
--- /dev/null
+++ b/index.php
@@ -0,0 +1,3 @@
+<?php
+ 	header("Location:vue/");
+?>
diff --git a/model/login.php b/model/login.php
new file mode 100644
index 0000000000000000000000000000000000000000..bf425b499ef4e15c73112226d0a1acad28dbe486
--- /dev/null
+++ b/model/login.php
@@ -0,0 +1,7 @@
+<?php
+
+function verify($email,$mdp){
+	return DB::query("SELECT id,prenom FROM Utilisateurs WHERE email='".$email."' AND mdp='".$mdp."'");
+} 
+
+?>
\ No newline at end of file
diff --git a/pima.sql b/pima.sql
new file mode 100644
index 0000000000000000000000000000000000000000..aa7a1a89adabc0a63b80c8e268bfc14676fc8e3f
--- /dev/null
+++ b/pima.sql
@@ -0,0 +1,66 @@
+-- phpMyAdmin SQL Dump
+-- version 4.5.4.1deb2ubuntu2.1
+-- http://www.phpmyadmin.net
+--
+-- Client :  localhost
+-- Généré le :  Mer 17 Octobre 2018 à 15:55
+-- Version du serveur :  5.7.23-0ubuntu0.16.04.1
+-- Version de PHP :  7.0.32-0ubuntu0.16.04.1
+
+SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
+SET time_zone = "+00:00";
+
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8mb4 */;
+
+--
+-- Base de données :  `pima`
+--
+CREATE DATABASE pima;
+USE pima;
+-- --------------------------------------------------------
+
+--
+-- Structure de la table `Utilisateurs`
+--
+
+CREATE TABLE `Utilisateurs` (
+  `id` int(11) NOT NULL,
+  `email` varchar(50) NOT NULL,
+  `mdp` text NOT NULL,
+  `nom` varchar(50) NOT NULL,
+  `prenom` varchar(50) NOT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+--
+-- Contenu de la table `Utilisateurs`
+--
+
+INSERT INTO `Utilisateurs` (`id`, `email`, `mdp`, `nom`, `prenom`) VALUES
+(1, 'jean.martin@gmail.com', '9AF15B336E6A9619928537DF30B2E6A2376569FCF9D7E773ECCEDE65606529A0', 'martin', 'jean');
+
+--
+-- Index pour les tables exportées
+--
+
+--
+-- Index pour la table `Utilisateurs`
+--
+ALTER TABLE `Utilisateurs`
+  ADD PRIMARY KEY (`id`);
+
+--
+-- AUTO_INCREMENT pour les tables exportées
+--
+
+--
+-- AUTO_INCREMENT pour la table `Utilisateurs`
+--
+ALTER TABLE `Utilisateurs`
+  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
diff --git a/vue/404.php b/vue/404.php
new file mode 100644
index 0000000000000000000000000000000000000000..e9d900a58828ab1ba03e8b00bdf21ab785fb1d31
--- /dev/null
+++ b/vue/404.php
@@ -0,0 +1 @@
+Page introuvable
\ No newline at end of file
diff --git a/vue/accueil.php b/vue/accueil.php
new file mode 100644
index 0000000000000000000000000000000000000000..e89ab543a07269099b26de688ae5fcd2474be107
--- /dev/null
+++ b/vue/accueil.php
@@ -0,0 +1,3 @@
+<?php
+echo "Hola ".$_SESSION["prenom"];
+?>
\ No newline at end of file
diff --git a/vue/index.php b/vue/index.php
new file mode 100644
index 0000000000000000000000000000000000000000..4230db5e0e8dd4146cec2f6d27da86415808f78d
--- /dev/null
+++ b/vue/index.php
@@ -0,0 +1,8 @@
+<?php
+	session_start();
+    require_once("../config/config.php");
+    //On charge le modele et le controleur de la page si ils existent et si on est autorisé à le faire 
+    require_once("page_to_load.php");
+    //On charge la page demandée(Sa vue)
+    require_once($content);
+?>
\ No newline at end of file
diff --git a/vue/login.php b/vue/login.php
new file mode 100644
index 0000000000000000000000000000000000000000..52e72c6ba375c943968567efcbfb97f705e6b81d
--- /dev/null
+++ b/vue/login.php
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<body>
+
+<h2>Login</h2>
+
+<form action=# method=post>
+  Adresse email:<br>
+  <input type="text" name="email">
+  <br>
+  Mot de passe:<br>
+  <input type="password" name="mdp">
+  <br>
+  <?php echo $msg ?>
+  <br>
+  <input type="submit" value="Connexion">
+</form> 
+</body>
+</html>
+
diff --git a/vue/page_to_load.php b/vue/page_to_load.php
new file mode 100644
index 0000000000000000000000000000000000000000..15c72890e347f3754a64885ec9023b2d05587d86
--- /dev/null
+++ b/vue/page_to_load.php
@@ -0,0 +1,40 @@
+<?php
+    require_once(PATH_COMMUN."func_commun.php");
+
+    //recupération de la page demandée par l'utilisateur
+    if(isset($_GET["page"])){
+        $page = secure($_GET["page"]);
+    }else{
+        $page = DEFAULT_PAGE;
+    }
+
+    //verification son droit d'accéder à une page autre que login
+    if(!isset($_SESSION["id"])){
+        if (!isset($_GET["page"])){
+            header("Location:index.php?page=login");
+        }
+        $page = LOGIN_PAGE;        
+    }
+
+    //Définition du chemin de la page à charger
+    $content = "404.php";
+    if(file_exists($page.".php")){
+
+        $content =$page.".php";
+
+        //On charge le fichier commun au traitement des données
+        require_once(PATH_COMMUN."DB.class.php"); 
+
+        //On charge le model correspondant
+        if (file_exists(PATH_MODEL.$content)) {
+            require_once(PATH_MODEL.$content);
+        }
+
+        //On charge le controleur correspondant
+        if (file_exists(PATH_CONTROLEUR.$content)) {
+            require_once(PATH_CONTROLEUR.$content);
+        }
+
+    }
+
+?>