Skip to content
Extraits de code Groupes Projets
Valider c5e4df52 rédigé par Baptiste LAMBERT's avatar Baptiste LAMBERT
Parcourir les fichiers

Base du site

parent 09e1d215
Branches
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Pipeline #1081 en échec
# PIMA-GROUPE-15 # PIMA-GROUPE-15
Développement d'une plate-forme de vote d'images populaires. 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*
<?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;
}
}
?>
<?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
<?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
<?php
define("DB_DSN","mysql:host=localhost;dbname=pima;charset=utf8");
define("DB_USERNAME","root"); // à compléter
define("DB_PASSWORD","mdp"); // à compléter
?>
<?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
<?php
header("Location:vue/");
?>
<?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
-- 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 */;
Page introuvable
\ No newline at end of file
<?php
echo "Hola ".$_SESSION["prenom"];
?>
\ No newline at end of file
<?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
<!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>
<?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);
}
}
?>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter