Suppression easteregg + fix captcha
This commit is contained in:
@@ -1,66 +0,0 @@
|
||||
<?php
|
||||
|
||||
// Fonction utilitaire de validation/lecture d'une photo de profil envoyée par formulaire
|
||||
// (jeu "Presse-Citron"). Même esprit que functions/pdfUpload.php.
|
||||
|
||||
// Taille max acceptée côté serveur : généreuse, mais le client redimensionne déjà l'image
|
||||
// avant l'envoi (voir pages/citron.php), donc en pratique un envoi normal fait quelques
|
||||
// dizaines de Ko. Cette limite est un filet de sécurité si le redimensionnement côté
|
||||
// navigateur est contourné (requête forgée, JS désactivé, etc.)
|
||||
define('AVATAR_MAX_SIZE', 3 * 1024 * 1024); // 3 Mo
|
||||
|
||||
// Dimensions max acceptées (en pixels) : évite qu'une image immense (mais légère une fois
|
||||
// compressée) fasse exploser le temps de décodage côté navigateur pour les autres joueurs
|
||||
define('AVATAR_MAX_DIMENSION', 4000);
|
||||
|
||||
// Types d'image acceptés (liste blanche : pas de SVG, qui peut contenir du JavaScript)
|
||||
const AVATAR_MIME_AUTORISES = ['image/jpeg', 'image/png', 'image/webp'];
|
||||
|
||||
// Vérifie et lit une image de profil envoyée 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)
|
||||
// - ['mime' => ..., 'data' => ...] si l'image est valide
|
||||
function lireUploadAvatar($champ = 'avatar') {
|
||||
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 de l'image (code " . $_FILES[$champ]['error'] . ").";
|
||||
}
|
||||
|
||||
if ($_FILES[$champ]['size'] > AVATAR_MAX_SIZE) {
|
||||
return 'La photo dépasse la taille maximale autorisée (3 Mo).';
|
||||
}
|
||||
|
||||
// getimagesize() décode réellement l'en-tête de l'image (contrairement à une simple
|
||||
// vérification d'extension) : un fichier renommé en .jpg mais qui n'est pas une vraie
|
||||
// image est rejeté ici, sans avoir besoin de l'extension GD
|
||||
$infos = @getimagesize($_FILES[$champ]['tmp_name']);
|
||||
if ($infos === false) {
|
||||
return "Le fichier envoyé n'est pas une image valide.";
|
||||
}
|
||||
|
||||
$largeur = $infos[0];
|
||||
$hauteur = $infos[1];
|
||||
$mime = $infos['mime'];
|
||||
|
||||
if (!in_array($mime, AVATAR_MIME_AUTORISES, true)) {
|
||||
return 'Format non supporté : utilise une image JPEG, PNG ou WebP.';
|
||||
}
|
||||
|
||||
if ($largeur > AVATAR_MAX_DIMENSION || $hauteur > AVATAR_MAX_DIMENSION) {
|
||||
return 'Image trop grande (maximum ' . AVATAR_MAX_DIMENSION . ' pixels de côté).';
|
||||
}
|
||||
|
||||
$contenu = file_get_contents($_FILES[$champ]['tmp_name']);
|
||||
if ($contenu === false) {
|
||||
return "Impossible de lire le fichier envoyé.";
|
||||
}
|
||||
|
||||
return [
|
||||
'mime' => $mime,
|
||||
'data' => $contenu
|
||||
];
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
<?php
|
||||
// Session du jeu "Presse-Citron" (easter egg code Konami) : totalement indépendante
|
||||
// des comptes admin du portfolio. Utilise des clés de session différentes
|
||||
// ($_SESSION['lemon_player_id'] / ['lemon_username']), jamais $_SESSION['role'] ou
|
||||
// ['user_id'] : se connecter au jeu ne donne et ne retire aucun droit sur le portfolio.
|
||||
|
||||
// Vérifie qu'un joueur est connecté au jeu, sinon répond en JSON et arrête le script
|
||||
function requireLemonAuth() {
|
||||
if (empty($_SESSION['lemon_player_id'])) {
|
||||
http_response_code(401);
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(['error' => 'Non connecté.']);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user