Il est intéressant de regrouper dans un même fichier toutes les instructions qui doivent être effectuées au début du programme, avant-même que la balise <!DOCTYPE> soit envoyée au navigateur. Ceci nous permettra, notamment, d'effectuer une redirection après avoir effectué un traitement. Si des balises HTML avaient été envoyées au navigateur, la redirection n'aurait pas été permise.
Le fichier qui regroupe les instruction qui doivent être effectuées au début du programme portera le nom configuration.inc.
Très important : dans ce fichier, il ne doit y avoir aucun echo ni rien en dehors de <?php et ?>, même pas un saut de ligne.
Voici un exemple de ce que ce fichier peut contenir :
<?php
@session_start();
/**
* Configurations - ne doit rien envoyer au navigateur.
* @author Christiane Lagacé <christiane.lagace@hotmail.com>
*/
require_once 'include/ma-bibliotheque.php';
// mode développement ou production
define('DEVEL', true);
// site local ou en ligne
define('HEBERGEMENT_LOCAL', true);
// version PHP (inspiré de https://www.php.net/manual/fr/function.phpversion.php)
$versionMajeurePHP = intval(explode('.',PHP_VERSION)[0]);
// variables codées en dur
if (HEBERGEMENT_LOCAL) {
$serveurBD='127.0.0.1';
$usagerBD = 'root';
$motDePasseBD = 'mysql';
$nomBD = 'mabd';
}
else {
$serveurBD='127.0.0.1';
$usagerBD = '...';
$motDePasseBD = '...';
$nomBD = '...';
}
$fuseauHoraire = 'America/Montreal';
$urlRacineSite = "https://mondomaine.com";
$slugSite = "monsite";
// variables initialisées par programmation
$dossierRacineServeur = dirname(__FILE__, 3);
$dossierRacineSite = dirname(__FILE__, 2);
if (isset($_SESSION['page_actuelle'])) {
$_SESSION['page_avant'] = $_SESSION['page_actuelle'];
} else {
$_SESSION['page-avant'] = 'index.php';
}
$_SESSION['page_actuelle'] = basename($_SERVER['SCRIPT_NAME']);
// fichier journal pour débogage
define('DEBUG_LOG_FILE', $dossierRacineServeur . DIRECTORY_SEPARATOR . 'log' . DIRECTORY_SEPARATOR . "$slugSite.log");
// fuseau horaire
date_default_timezone_set($fuseauHoraire);
// gestion des erreurs
if (DEVEL === true) {
// journalise et affiche tous les niveaux d'erreurs en mode développement
error_reporting(E_ALL);
ini_set('display_errors', '1'); // mettre à 0 si on ne veut pas voir les message à l'écran
}
else {
// en mode production, ne journalise pas certains niveaux pour des raisons de performance
error_reporting(E_ALL & ~E_STRICT & ~E_DEPRECATED);
// aucun message ne sera affiché pour des raisons de sécurité
ini_set('display_errors', '0');
}
// branchement à la BD
if ($versionMajeurePHP < 8) {
// branchement à la BD (PHP 7.x)
@$mysqli = new mysqli($serveurBD, $usagerBD, $motDePasseBD, $nomBD);
if ($mysqli->connect_errno) {
die('Échec lors de la connexion à la base de données.');
}
}
else {
// branchement à la BD (PHP 8.x)
try {
$mysqli = new mysqli($serveurBD, $usagerBD, $motDePasseBD, $nomBD);
} catch (Exception $e) {
die('Échec lors de la connexion à la base de données.');
}
}
$mysqli->set_charset("utf8");
▼Publicité