Files
pta/page_bootstrap.php
2026-08-20 13:22:49 +02:00

47 lines
1.7 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
declare(strict_types=1);
require_once __DIR__ . '/app/autoload.php';
use App\Controllers\PageController;
use App\Core\Security;
/**
* Amorce et exécute une page HTML.
*
* Chaque fichier .php à la racine se résume à deux lignes : require de ce
* fichier, puis runPage('<clé>'). Il n'y a pas de routeur — une URL correspond
* toujours à un fichier réel.
*
* Tout Throwable est rattrapé ici et rendu sous forme de page d'erreur HTML
* autonome : sans ce filet, une base non migrée renverrait une page blanche ou,
* pire, une trace d'exception exposant l'arborescence du serveur. Le détail
* technique reste journalisé côté serveur par Security::reportThrowable().
*
* @param string $method Nom de la méthode de PageController à appeler, qui sert
* aussi de clé de page pour acces_role_page.
*/
function runPage(string $method): void
{
try {
$pdo = require __DIR__ . '/app/bootstrap.php';
$controller = new PageController($pdo);
if (!method_exists($controller, $method)) {
throw new RuntimeException('Page inconnue.');
}
$controller->{$method}();
} catch (Throwable $e) {
http_response_code(500);
Security::sendHtmlHeaders();
$message = htmlspecialchars(
Security::reportThrowable($e, 'Une erreur technique empêche l’affichage de cette page.'),
ENT_QUOTES,
'UTF-8'
);
echo '<!doctype html><html lang="fr"><meta charset="utf-8"><title>Erreur PTA</title>';
echo '<body><h1>Impossible de démarrer PTA</h1><p>' . $message . '</p>';
echo '<p>Contactez l’administrateur de l’application : le détail de l’erreur a été journalisé.</p></body></html>';
}
}