0 && empty($_POST) && empty($_FILES); } // Message d'erreur explicite à afficher quand postDepasseLimite() est vrai function messageDepassementPost() { return "Le fichier envoyé est trop volumineux pour le serveur (limite actuelle : " . ini_get('post_max_size') . "). Réduis la taille du PDF, ou augmente " . "post_max_size et upload_max_filesize côté serveur."; } // Vérifie et lit un fichier PDF envoyé en upload ($_FILES) // Retourne : // - null si aucun fichier n'a été envoyé (ce n'est pas une erreur) // - une chaîne de texte si le fichier est invalide (message d'erreur à afficher) // - ['filename' => ..., 'data' => ...] si le PDF est valide function lireUploadPdf($champ = 'pdf') { if (!isset($_FILES[$champ]) || $_FILES[$champ]['error'] === UPLOAD_ERR_NO_FILE) { return null; } if ($_FILES[$champ]['error'] !== UPLOAD_ERR_OK) { return "Erreur lors de l'envoi du PDF (code " . $_FILES[$champ]['error'] . ")."; } if ($_FILES[$champ]['size'] > PDF_MAX_SIZE) { return "Le PDF dépasse la taille maximale autorisée (15 Mo)."; } // Vérification de l'extension $extension = strtolower(pathinfo($_FILES[$champ]['name'], PATHINFO_EXTENSION)); if ($extension !== 'pdf') { return "Le fichier doit être un PDF (extension .pdf)."; } // Vérification du type réel du fichier (pas seulement l'extension, pour éviter // qu'un fichier malveillant renommé en .pdf soit accepté) // (pas de finfo_close : déprécié depuis PHP 8.5, la ressource se libère toute seule) $finfo = finfo_open(FILEINFO_MIME_TYPE); $mime = finfo_file($finfo, $_FILES[$champ]['tmp_name']); if ($mime !== 'application/pdf') { return "Le fichier envoyé n'est pas un PDF valide."; } $contenu = file_get_contents($_FILES[$champ]['tmp_name']); if ($contenu === false) { return "Impossible de lire le fichier envoyé."; } return [ 'filename' => basename($_FILES[$champ]['name']), 'data' => $contenu ]; }