bootstrap
bootstrap
SYNOPSIS
bootstrap()
DESCRIPTION
bootstrap initialise le contexte du programme.
Si le paramètre de configuration $db_url est défini, bootstrap ouvre une connextion avec la BD.
bootstrap définit les variables globales $base_url, $base_path et $base_root.
bootstrap ouvre toujours une session et définit le variable globale $session_name si elle n'est pas déjà définie dans le fichier de configuration.
bootstrap est la première fonction appelée par index.php, le point d'entrée unique du programme.
CODE
- require_once 'session.php';
- require_once 'unsetglobals.php';
- require_once 'validatehostname.php';
Charge le code des fonctions session_open, unset_globals et validate_host_name.
- function bootstrap() {
- global $base_url, $base_path, $base_root;
- global $db_url, $session_name, $login_lifetime;
bootstrap initialise les variables globales $base_url, $base_path, $base_root et $session_name.
- if (isset($_SERVER['HTTP_HOST'])) {
- $_SERVER['HTTP_HOST'] = strtolower($_SERVER['HTTP_HOST']);
- if (!validate_host_name($_SERVER['HTTP_HOST'])) {
- header('HTTP/1.1 400 Bad Request');
- exit;
- }
- }
- else {
- $_SERVER['HTTP_HOST'] = '';
- }
Tente de repérer une requête frauduleuse en validant le nom de l'expéditeur avec validate_host_name.
- unset_globals();
- @include 'settings.inc';
- @include 'config.inc';
- @include 'db.inc';
Nettoie les variables globales de PHP. Initialise et configure le programme.
- if ($db_url == 'mysql://username:password@localhost/databasename') {
- $db_url = false;
- }
- if ($db_url) {
- require_once 'pdo.php';
- db_connect($db_url);
- }
Vérifie si le connecteur à la BD a la valeur par défaut.
Ouvre une connexion avec la BD si $db_url n'est pas false.
- if ($base_url) {
- $base_url = trim($base_url, '/');
- $url = parse_url($base_url);
- if (!isset($url['path'])) {
- $url['path'] = '';
- }
- $base_path = $url['path'];
- $base_root = substr($base_url, 0, strlen($base_url) - strlen($base_path));
- }
- else {
- $base_root = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http';
- $base_url = $base_root .= '://'. $_SERVER['HTTP_HOST'];
- if ($dir = trim(dirname($_SERVER['SCRIPT_NAME']), '\,/')) {
- $base_path = '/' . $dir;
- $base_url .= $base_path;
- }
- else {
- $base_path = '';
- }
- }
Si la variable globale $base_url a été définie dans config.inc, en extrait la partie chemin d'accès de l'URL pour initialiser les variables globales $base_path et $base_root. Sinon, calcule les valeurs de $base_root et de $base_path à partir des variables PHP $_SERVER['HTTPS'], $_SERVER['HTTP_HOST'] et $_SERVER['SCRIPT_NAME'], puis fabrique $base_url en les concaténant.
- if (!$session_name) {
- list( , $session_name) = explode('://', $base_url, 2);
- $session_name = 'izend@' . $session_name;
- if (ini_get('session.cookie_secure')) {
- $session_name .= 'SSL';
- }
- }
Fabrique un nom de session unique si $session_name n'est pas déjà défini.
- session_open(md5($session_name));
Ouvre une session dont le nom est le MD5 de $session_name.
- if (isset($_SESSION['user']['lasttime'])) {
- $now = time();
- if ($now - $_SESSION['user']['lasttime'] > $login_lifetime) {
- unset($_SESSION['user']);
- }
- else {
- $_SESSION['user']['lasttime'] = $now;
- }
- }
Déconnecte un utilisateur qui est resté trop longtemps inactif.
Le paramètre de configuration $login_lifetime définit le délai maximum en secondes entre deux requêtes.
La variable de session $_SESSION['user'] détermine si un utilisateur est identifié.
Le champ $_SESSION['user']['lasttime'] est initialisé lorsque l'utilisateur se connecte si le paramètre $login_lifetime ne vaut pas false.
VOIR AUSSI
validatehostname, unsetglobals, db, session, userisidentified
Commentaires