*/ namespace ImageHeberg; /* * Affichage d'une image & mise à jour des stats */ require 'config/config.php'; // URL demandée $url = $_SERVER['REQUEST_URI']; // Nom du fichier demandé - Nettoyer les paramètres $fileName = basename(parse_url($url, PHP_URL_PATH)); // Faut-il forcer l'affichage (et ne pas enregistrer les stats) ? $adminForceAffichage = false; /** * Gestion du God mode */ if ( str_contains($url, 'forceDisplay=1') // Mis en premier pour éviter d'ouvrir des sessions inutiles && UtilisateurObject::checkAccess(UtilisateurObject::LEVEL_ADMIN, false) ) { $adminForceAffichage = true; } /** * Définition du type */ if (preg_match('#/' . _REPERTOIRE_MINIATURE_ . '#', trim($url))) { // Miniature $monObjet = new MiniatureObject(); } else { // Image (ou erreur) $monObjet = new ImageObject(); } /** * Est-ce que le fichier existe en BDD et sur le système de fichier ? */ if ( !$monObjet->charger($fileName) || !file_exists($monObjet->getPathMd5()) ) { // Fichier non trouvé... $monObjet = new ImageObject(); $monObjet->charger(_IMAGE_404_); // Envoi d'un header en 404 header('HTTP/2 404 Not Found'); } /** * Le fichier est-il bloqué ? */ if ( !$adminForceAffichage && ($monObjet->isBloquee() || $monObjet->isSignalee()) ) { $monObjet = new ImageObject(); $monObjet->charger(_IMAGE_BAN_); // Envoi d'un header en 451 -> Unavailable For Legal Reasons header('HTTP/2 451 Unavailable For Legal Reasons'); } elseif ( !$adminForceAffichage && $monObjet->getNbViewPerDay() > _ABUSE_NB_AFFICHAGES_PAR_JOUR_BLOCAGE_AUTO_ && !$monObjet->isApprouvee() ) { // Lancer un blocage de l'image si trop affichée require 'cron/abuse.php'; } /** * Mise à jour des stats d'affichage */ if (!$adminForceAffichage) { $monObjet->updateStatsAffichage($_SERVER['REMOTE_ADDR']); } /** * Fermeture du lien sur la BDD */ MaBDD::close(); /** * Envoi du bon entête HTTP */ if (!_PHPUNIT_) { header('Content-type: ' . HelperImage::getMimeType($monObjet->getPathMd5())); } /** * Envoi du fichier */ readfile($monObjet->getPathMd5());