file_uploads : 1. upload_max_filesize : 128M.
upload.txt | 4 Ko |
<?php
/**
* @file index.php
* @brief Page d'upload
*
* @author hughes monget
* @see http://www.monget.com/
*/
// Paramétrages PHP
//error_reporting(E_ALL | E_NOTICE | E_STRICT);
error_reporting(0);
set_time_limit(0);
$arr_ini_set = array('log_errors' => 0, 'display_errors' => 1, 'error_log' => 0, 'html_errors' => 0, 'date.timezone' => 'Europe/Paris');
array_walk($arr_ini_set, create_function('$v, $k', 'ini_set($k, $v);'));
if (!setlocale(LC_ALL, 'french')) { echo 'locale not set'; }
if (get_magic_quotes_gpc())
{
$_REQUEST = array_map('stripslashes', $_REQUEST);
}
// Répertoire d'upload et message
$str_repertoire_upload = dirname(__FILE__).DIRECTORY_SEPARATOR;
$str_message = '';
// Liste des fichiers du répertoire.
$arr_str_liste_fichier = glob($str_repertoire_upload.'*');
$arr_str_liste_fichier = array_map('basename', $arr_str_liste_fichier);
$arr_str_liste_fichier = array_combine($arr_str_liste_fichier, $arr_str_liste_fichier);
$arr_str_fichier_masque = array(basename($_SERVER['SCRIPT_NAME']), 'web.config');
foreach($arr_str_fichier_masque as $str_fichier_masque)
{
unset($arr_str_liste_fichier[$str_fichier_masque]);
}
// Gestion de la suppression de fichiers.
if (isset($_REQUEST['supprimer']) && is_string($_REQUEST['supprimer']) && isset($arr_str_liste_fichier[$_REQUEST['supprimer']]))
{
if (unlink($str_repertoire_upload.$arr_str_liste_fichier[$_REQUEST['supprimer']]))
{
$str_message = 'Fichier supprimé !';
}
else
{
$str_message = 'Erreur de suppression de fichier !';
}
unset($arr_str_liste_fichier[$_REQUEST['supprimer']]);
}
// Gestion de l'upload.
if (isset($_FILES['fichier']))
{
$str_nom_fichier = basename($_FILES['fichier']['name']);
// Liste blanches d'extension
$arr_str_extension = array('txt', 'zip', 'rar', 'jpg', 'gif', 'png', 'dat', 'avi', 'mp3', 'doc', 'xls', 'mdb');
$str_extension = strtolower(pathinfo($str_nom_fichier, PATHINFO_EXTENSION));
if (!in_array($str_extension, $arr_str_extension))
{
$str_message = 'Extensions autorisées: '.implode(', ', $arr_str_extension);
}
if (!$str_message)
{
$str_nom_fichier = strtr($str_nom_fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$str_nom_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $str_nom_fichier);
if (move_uploaded_file($_FILES['fichier']['tmp_name'], $str_repertoire_upload.$str_nom_fichier))
{
$str_message = 'Upload effectué avec succès !';
$arr_str_liste_fichier[$str_nom_fichier] = $str_nom_fichier;
}
else
{
$str_message = 'Echec de l\'upload !';
}
}
}
// Affichage du CSS;
echo
'
<style type="text/css">
<!--
table td
{
/* font-family: monospace; */
}
-->
</style>
';
// Affichage des infos d'upload
$arr_str_parametre_php = array('file_uploads', 'upload_max_filesize');
if ($arr_str_parametre_php)
{
echo '<p>';
foreach($arr_str_parametre_php as $str_parametre_php)
{
echo htmlspecialchars($str_parametre_php.' : '.ini_get($str_parametre_php).'. ', ENT_QUOTES);
}
echo '</p>';
}
// Affichage du formulaire d'upload
echo
'
<form method="post" action="',htmlspecialchars($_SERVER['SCRIPT_NAME'], ENT_QUOTES),'" enctype="multipart/form-data">
Fichier : <input type="file" name="fichier">
<input type="submit" name="envoyer" value="Envoyer le fichier">
</form>
';
// Affichage d'un message.
if ($str_message)
{
echo '<p>'.htmlspecialchars($str_message, ENT_QUOTES).'</p>';
}
// Affichage de la liste des fichiers.
if ($arr_str_liste_fichier)
{
natcasesort($arr_str_liste_fichier);
echo '<table>';
foreach($arr_str_liste_fichier as $str_fichier)
{
echo "\n";
echo '<tr><td><a target="_blank" href="',htmlspecialchars($str_fichier, ENT_QUOTES),'">'.htmlspecialchars($str_fichier, ENT_QUOTES).'</a></td>';
echo '<td style="text-align: right">'.number_format(filesize($str_repertoire_upload.$str_fichier) / 1024.0, 0, '', ' ').' Ko</td>';
// Affichage du formulaire de suppression de fichier.
echo '<td>';
echo '
<form method="post" action="',htmlspecialchars($_SERVER['SCRIPT_NAME'], ENT_QUOTES),'">
<input type="hidden" name="supprimer" value="',htmlspecialchars($str_fichier, ENT_QUOTES),'" />
<input type="submit" value="x" />
</form>
';
echo '</td></tr>';
}
echo '</table>';
}
echo '<hr />';
highlight_file(__FILE__);