56

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
  1. require_once 'session.php';
  2. require_once 'unsetglobals.php';
  3. require_once 'validatehostname.php';

Charge le code des fonctions session_open, unset_globals et validate_host_name.

  1. function bootstrap() {
  2.     global $base_url, $base_path, $base_root;
  3.     global $db_url, $session_name, $login_lifetime;

bootstrap initialise les variables globales $base_url, $base_path, $base_root et $session_name.

  1.     if (isset($_SERVER['HTTP_HOST'])) {
  2.         $_SERVER['HTTP_HOST'] = strtolower($_SERVER['HTTP_HOST']);
  3.         if (!validate_host_name($_SERVER['HTTP_HOST'])) {
  4.             header('HTTP/1.1 400 Bad Request');
  5.             exit;
  6.         }
  7.     }
  8.     else {
  9.         $_SERVER['HTTP_HOST'] = '';
  10.     }

Tente de repérer une requête frauduleuse en validant le nom de l'expéditeur avec validate_host_name.

  1.     unset_globals();
  2.  
  3.     @include 'settings.inc';
  4.     @include 'config.inc';
  5.     @include 'db.inc';

Nettoie les variables globales de PHP. Initialise et configure le programme.

  1.     if ($db_url == 'mysql://username:password@localhost/databasename') {
  2.         $db_url = false;
  3.     }
  4.  
  5.     if ($db_url) {
  6.         require_once 'pdo.php';
  7.         db_connect($db_url);
  8.     }

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.

  1.     if ($base_url) {
  2.         $base_url = trim($base_url, '/');
  3.  
  4.         $url = parse_url($base_url);
  5.  
  6.         if (!isset($url['path'])) {
  7.             $url['path'] = '';
  8.         }
  9.  
  10.         $base_path = $url['path'];
  11.         $base_root = substr($base_url, 0, strlen($base_url) - strlen($base_path));
  12.     }
  13.     else {
  14.         $base_root = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http';
  15.  
  16.         $base_url = $base_root .= '://'. $_SERVER['HTTP_HOST'];
  17.  
  18.         if ($dir = trim(dirname($_SERVER['SCRIPT_NAME']), '\,/')) {
  19.             $base_path = '/' . $dir;
  20.             $base_url .= $base_path;
  21.         }
  22.         else {
  23.             $base_path = '';
  24.         }
  25.     }

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.

  1.     if (!$session_name) {
  2.         list( , $session_name) = explode('://', $base_url, 2);
  3.         $session_name = 'izend@' . $session_name;
  4.  
  5.         if (ini_get('session.cookie_secure')) {
  6.             $session_name .= 'SSL';
  7.         }
  8.     }

Fabrique un nom de session unique si $session_name n'est pas déjà défini.

  1.     session_open(md5($session_name));

Ouvre une session dont le nom est le MD5 de $session_name.

  1.     if (isset($_SESSION['user']['lasttime'])) {
  2.         $now = time();
  3.         if ($now - $_SESSION['user']['lasttime'] > $login_lifetime) {
  4.             unset($_SESSION['user']);
  5.         }
  6.         else {
  7.             $_SESSION['user']['lasttime'] = $now;
  8.         }
  9.     }

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

Votre commentaire :
[p] [b] [i] [u] [s] [quote] [pre] [br] [code] [url] [email] strip aide 2000

Entrez un maximum de 2000 caractères.
Améliorez la présentation de votre texte avec les balises de formatage suivantes :
[p]paragraphe[/p], [b]gras[/b], [i]italique[/i], [u]souligné[/u], [s]barré[/s], [quote]citation[/quote], [pre]tel quel[/pre], [br]à la ligne,
[url]http://www.izend.org[/url], [url=http://www.izend.org]site[/url], [email]izend@izend.org[/email], [email=izend@izend.org]izend[/email],
[code]commande[/code], [code=langage]code source en c, java, php, html, javascript, xml, css, sql, bash, dos, make, etc.[/code].