"Nom affiché dans la liste déroulante" "screenshot" => "Screenshot", "images" => "Images", "bannieres" => "Bannières", "downloads" => "Téléchargement", ); // Extensions des fichiers images autorisés pour l'upload $admupdExtensionsImage = array('gif', 'jpg', 'jpe', 'jpeg', 'jfif', 'png', 'bmp'); // Extensions des fichiers interdits pour l'upload et le téléchargement $admupdExtensionsInterdites = array('php\d*', 'inc', 'htm', 'html', 'phtml', 'shtml', 'wml', 'pwml', 'js', 'jsp', 'asp', 'pl', 'py', 'pyc', 'cgi', 'htaccess'); // Nom du répertoire par défaut $admupdRepDefaut = "screenshot"; // Taille maximale du fichier à envoyer (octets) $admupdTailleMaximaleFichier = 1000000; // Titres de colonne pour changer l'ordre de tri $admupdTitresColonne = array( "Fichiers" => "Trier par nom de fichier", "Description" => "Trier par description"); // Définition des constantes pour les versions anciennes de PHP if (!defined("UPLOAD_ERR_OK")) define("UPLOAD_ERR_OK", 0); // < 4.3.0 if (!defined("UPLOAD_ERR_INI_SIZE")) define("UPLOAD_ERR_INI_SIZE", 1);// < 4.3.0 if (!defined("UPLOAD_ERR_FORM_SIZE")) define("UPLOAD_ERR_FORM_SIZE", 2);// < 4.3.0 if (!defined("UPLOAD_ERR_PARTIAL")) define("UPLOAD_ERR_PARTIAL", 3);// < 4.3.0 if (!defined("UPLOAD_ERR_NO_FILE")) define("UPLOAD_ERR_NO_FILE", 4);// < 4.3.0 if (!defined("UPLOAD_ERR_NO_TMP_DIR")) define("UPLOAD_ERR_NO_TMP_DIR", 6);// < 4.3.10, 5.0.3 if (!defined("UPLOAD_ERR_CANT_WRITE")) define("UPLOAD_ERR_CANT_WRITE", 7); // < 5.0.5 // Initialisation des variables empty($_REQUEST['rep']) ? $admupdRep = '' : $admupdRep = decode_gpc($_REQUEST['rep']); empty($_REQUEST['action']) ? $action = '' : $action = decode_gpc($_REQUEST['action']); empty($_REQUEST['id']) ? $admupdId = '' : $admupdId = decode_gpc($_REQUEST['id']); empty($_GET['form']) ? $admupdForm = '' : $admupdForm = decode_gpc($_GET['form']); empty($_GET['tri']) ? $admupdTri = '' : $admupdTri = decode_gpc($_GET['tri']); if ($admupdTri == "" || $admupdTri < 1) $admupdTri = 1; elseif ($admupdTri > 2) $admupdTri = 2; $admupdMsgErreur = ""; // Contrôle du nom de fichier (sécurité) $admupdId = basename($admupdId); // Supprime les noms de répertoire $admupdId = preg_replace('#[\0-\x1f]#', '', $admupdId); // Filtre les caractères de contrôle // Actions sur le fichier switch ($action) { // Modification d'une description de fichier case "modifier": if ($admupdId != "") { empty($_POST['desc']) ? $description = '' : $description = decode_gpc($_POST['desc']); ecrire_description_photo($admupdId, $description); } break; // Suppression d'un fichier case "supprimer": $nomFichier = $admupdRep."/".$admupdId; // Vérifie que la suppression est autorisée if ($admupdId != "" && array_key_exists($admupdRep, $admupdListeRep) && // Répertoire autorisé ? file_exists($nomFichier) && is_file($nomFichier) && !preg_match('#\.(php\d*|inc|htaccess)$#i', $admupdId)) { // Type autorisé ? @chmod($nomFichier, 0777); unlink($nomFichier); // Traitements spécifiques en fonction du répertoire switch ($admupdRep) { case "downloads": break; case "screenshot": supprimer_description_photo($admupdId); break; } } break; // Envoi d'un fichier case "envoyer": $admupdForm = 2; // Affichage du message d'erreur // Un fichier a-t-il été reçu correctement ? if (isset($_FILES['fichier1']) && (!isset($_FILES['fichier1']['error']) || $_FILES['fichier1']['error'] == UPLOAD_ERR_OK)) { //On récupère la taille, le nom et le nom du fichier temporaire $f1_size = $_FILES['fichier1']['size']; $f1_name = decode_gpc($_FILES['fichier1']['name']); $f1_tmpname = $_FILES['fichier1']['tmp_name']; $f1_name = preg_replace('#[\0-\x1f]#', '', $f1_name); // Filtre les caractères de contrôle if (array_key_exists($admupdRep, $admupdListeRep)) { // Répertoire autorisé ? // Contrôle du type en fonction du répertoire switch ($admupdRep) { case "downloads": // Types interdits pour le téléchargement $f1_name_ok = !preg_match('#\.('.implode('|', $admupdExtensionsInterdites).')$#i', $f1_name); break; default: // Par défaut, seules les images sont acceptées $f1_name_ok = preg_match('#\.('.implode('|', $admupdExtensionsImage).')$#i', $f1_name); break; } if (!$f1_name_ok) { // Type de fichier non autorisé $admupdMsgErreur = "Ce type de fichier ne peut pas être envoyé dans ce dossier"; } else { if (move_uploaded_file($f1_tmpname, $admupdRep."/".$f1_name)) { // Renvoie TRUE si OK // Traitements spécifiques en fonction du répertoire switch ($admupdRep) { case "downloads": // Ajoute un téléchargement pointant sur le fichier uploadé $date = date("d/m/Y"); $heure = date("H:i"); $contenu = file_get_contents("data/dl.txt"); $contenu = $contenu."inactive¦".$f1_name."¦downloads/".$f1_name."¦".$date."¦".$heure."¦Aucun commentaire"."\n"; file_put_contents("data/dl.txt", $contenu); break; case "screenshot": // Enregistre la description de la photo empty($_POST['desc']) ? $description = '' : $description = decode_gpc($_POST['desc']); ecrire_description_photo($f1_name, $description); break; } $admupdForm = ""; // Pas d'erreur : affichage normal } } } } break; } // Vérifie que le répertoire est autorisé pour l'upload de fichiers if ($admupdRep == "" || ! array_key_exists($admupdRep, $admupdListeRep)) { $admupdRep = $admupdRepDefaut; // Sinon, on prend le répertoire par défaut } //============================================================================= // Affichage de la page //============================================================================= // La constante définie ci-dessous est utilisée par hpage.inc define("HPAGE_HEADER", ' '); include("include/hpage.inc"); htable("Admin - Envoyer un fichier sur le serveur", "100%"); switch ($admupdForm) { //----------------------------------------------------------------------------- // Affichage de la liste des fichiers et du formulaire d'envoi //----------------------------------------------------------------------------- case "": // Creation de l'index des fichiers $admupdFichiers = array(); $i = 0; $dossier = opendir($admupdRep); while ($fichier = readdir($dossier)) { if (is_file($admupdRep."/".$fichier) && $fichier != "index.php" && strtolower($fichier) != "thumbs.db") { $admupdFichiers[$i][0] = $fichier; if ($admupdRep == "screenshot") $admupdFichiers[$i][1] = description_photo($fichier); $i++; } } closedir($dossier); function comparer_fichiers($f1, $f2) { return strcmp($f1[0], $f2[0]); } function comparer_descriptions($f1, $f2) { return strcoll2($f1[1], $f2[1]); } setlocale(LC_COLLATE, PHORTAIL_LC_COLLATE); if ($admupdRep == "screenshot" && $admupdTri == 2) usort($admupdFichiers, "comparer_descriptions"); else usort($admupdFichiers, "comparer_fichiers"); echo '


Choisissez le dossier de destination

Sélectionnez un fichier et cliquez sur "Envoyer". Il sera copié sur votre site dans le dossier choisi. Pour supprimer un fichier dans ce même dossier, cliquez sur le bouton "Supprimer" dans la liste ci-dessous.

 

'; if ($admupdRep == "screenshot") { echo ' '; } echo '

Fichier :

Description :



Retour admin || DÉCONNEXION


'; $nColonnesTableau = 3; if ($admupdRep == "screenshot") { $nColonnesTableau = count($admupdTitresColonne) + 2; $i = 1; foreach ($admupdTitresColonne as $titreColonne => $infoColonne) { echo '\n"; $i++; } } else echo ''."\n"; echo ''."\n"; for ($i = 0; $i < count($admupdFichiers); $i++) { echo ' '; if ($admupdRep == "screenshot") { $desc = $admupdFichiers[$i][1]; if ($desc == "") $desc = "[aucune]"; echo ' '; } echo ' '; } if (empty($admupdFichiers)) echo ''."\n"; echo '
Dossier'; if ($i == $admupdTri) { echo '- '.$titreColonne.' -'; } else { echo ''. $titreColonne.''; } echo "FichiersSupprimer
'; if ($admupdFichiers[$i][0] == $admupdId) echo ''; echo ' Dossier '.$admupdRep.' '.conv_html($admupdFichiers[$i][0]).' '. conv_html($desc).' Supprimer

Aucun fichier

'; break; //----------------------------------------------------------------------------- // Formulaire de modification de la description des photos //----------------------------------------------------------------------------- case 1: echo '
'."\n"; if ($admupdId != "" && file_exists($admupdRep."/".$admupdId) && is_file($admupdRep."/".$admupdId)) { echo '

Modifier une description

Retour à la liste des fichiers

 

Fichier :

'.conv_html($admupdId).'

Description :


'; } echo '

Retour à la liste des fichiers

'; break; //----------------------------------------------------------------------------- // Affichage d'un message d'erreur d'envoi de fichier //----------------------------------------------------------------------------- case 2: // Certains hébergeurs désactivent la fonction ini_get() ... // Dans ce cas, ini_get() renvoie toujours NULL. $val = @ini_get("file_uploads"); // Upload autorisé ? if (!is_null($val)) $iniFileUploads = (boolean) $val; else $iniFileUploads = true; $val = @ini_get("post_max_size"); if (!is_null($val)) $iniPostMaxSize = $val." octets"; else $iniPostMaxSize = "valeur inconnue"; $val = @ini_get("upload_max_filesize"); if (!is_null($val)) $iniUploadMaxFilesize = $val." octets"; else $iniUploadMaxFilesize = "valeur inconnue"; $messagesErreur = array( UPLOAD_ERR_INI_SIZE => "Le fichier envoyé excède la taille maximale (".$iniUploadMaxFilesize.") autorisée sur le serveur", UPLOAD_ERR_FORM_SIZE => "Le fichier envoyé excède la taille maximale (".$admupdTailleMaximaleFichier." octets) spécifiée dans le formulaire HTML", UPLOAD_ERR_PARTIAL => "Le fichier n'a été que partiellement envoyé", UPLOAD_ERR_NO_FILE => "Vous n'avez sélectionné aucun fichier à envoyer", UPLOAD_ERR_NO_TMP_DIR => "Un dossier temporaire est manquant", UPLOAD_ERR_CANT_WRITE => "Échec de l'écriture du fichier sur le disque", ); echo '

 

'; if ($admupdMsgErreur != "") $message = $admupdMsgErreur; else { if (isset($_FILES['fichier1'])) { if (isset($_FILES['fichier1']['error'])) $codeErreur = $_FILES['fichier1']['error']; else $codeErreur = UPLOAD_ERR_OK; if ($codeErreur != UPLOAD_ERR_OK) { if (isset($messagesErreur[$codeErreur])) $message = $messagesErreur[$codeErreur]; else $message = "Erreur non répertoriée"; } else $message = "Le fichier n'a pas pu être copié vers le dossier choisi sur le serveur"; } elseif (!$iniFileUploads) $message ="L'envoi de fichiers n'est pas autorisé sur le serveur"; else $message = "Le fichier envoyé excède la taille maximale (post_max_size: ".$iniPostMaxSize.") autorisée sur le serveur"; } echo '

ERREUR :

'.conv_html($message).'.

'; echo '

 

Retour à la liste des fichiers

'; break; } //----------------------------------------------------------------------------- echo '


Retour admin || DÉCONNEXION

'; btable(); include("include/bpage.inc"); ?>