Skip to content

Instantly share code, notes, and snippets.

@NicolasBadey
Last active August 29, 2015 14:10
Show Gist options
  • Save NicolasBadey/6295ab2f7cf6d2fa3f71 to your computer and use it in GitHub Desktop.
Save NicolasBadey/6295ab2f7cf6d2fa3f71 to your computer and use it in GitHub Desktop.
Supinternet A1 correction TD3
<?php
/**
* Write File accepte un nom de fichier en paramétre et un tableau,
* Ici j'oblige à ce que la variable $value soit un tableau
*/
function writeFile($file, array $value)
{
// Vérifie si le fichier existe déjà
if (file_exists($file)) {
// Si oui on récupère son contenu
$data = json_decode(file_get_contents($file), true);
} else {
$data = [];
}
/**
* Rajoute les infos au début du tableau
* Si on avait voulu à la fin : $data[] = $value
*/
array_unshift($data, $value);
// Insère les nouvelles données dans le fichier
$status = file_put_contents($file,json_encode($data));
// on informe si l'opération c'est bien passé en retournant ce que retourne file_put_content
return $status;
}
/**
* ajoute un message en session
*/
function addMessageFlash($type, $message)
{
$types= ['success','error','alert','info'];
if (!in_array($type, $types)){
return false;
}
// on vérifie que le type existe
if (!isset($_SESSION['flashBag'][$type])) {
//si non on le créé avec un Array vide
$_SESSION['flashBag'][$type] = [];
}
// on ajoute le message
$_SESSION['flashBag'][$type][] = $message;
}
<?php
// démarre la session
session_start();
// charge le fichier des fonctions PHP
require_once('function.php');
// Liste blanche, c'est notre routing qui correspont à nos pages
$routing = [
'home' => [
'controller' => 'home',
'secure'=> false
],
'inscription' => [
'controller' => 'subscription',
'secure' => false
],
'login' => [
'controller' => 'login',
'secure' => false
],
'404' => [
'controller' => '404',
'secure' => false
],
];
// verifions la pertinance de la page en GET
if (isset($_GET['page'])) {
$page = $_GET['page'];
if (!isset($routing[$page])) {
// la page n'existe pas
$page = '404';
}
} else {
//page par defaut
$page = 'home';
}
//check pour la sécurité
if ($routing[$page]['secure'] === true && !isset($_SESSION['name'])) {
//Met en session un message informatif
addMessageFlash('info', 'Veuillez-vous connecter afin d\'accéder à cette page');
//redirection
header("location: index.php?page=login");
exit;
}
?>
...
<?php
// Charge la page demandée
$fileController = $routing[$page]['controller'] . '.php';
if (file_exists($fileController)) {
require($fileController);
} else {
echo 'File is missing';
}
?>
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment