1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| define("UPLOAD_REP_PHOTO", "upload/");
define("UPLOAD_SIZEMAX_PHOTO", 200000); // La taille, en octets.
define("UPLOAD_EXTENSION_PHOTO", "jpg,jpeg,png,gif");
define("UPLOAD_MIMETYPE_PHOTO", "image/jpeg,image/png,image/gif");
if (!empty($_POST)) {
// Messages d'erreurs de chargement de fichiers
$array_upload_err = [
// UPLOAD_ERR_OK => "Valeur : 0. Aucune erreur, le téléchargement est correct.",
UPLOAD_ERR_INI_SIZE => "Valeur : 1. La taille du fichier téléchargé excède la valeur de upload_max_filesize, configurée dans le php.ini.",
UPLOAD_ERR_FORM_SIZE => "Valeur : 2. La taille du fichier téléchargé excède la valeur de MAX_FILE_SIZE, qui a été spécifiée dans le formulaire HTML.",
UPLOAD_ERR_PARTIAL => "Valeur : 3. Le fichier n'a été que partiellement téléchargé.",
UPLOAD_ERR_NO_FILE => "Valeur : 4. Aucun fichier n'a été téléchargé.",
UPLOAD_ERR_NO_TMP_DIR => "Valeur : 6. Un dossier temporaire est manquant. Introduit en PHP 5.0.3.",
UPLOAD_ERR_CANT_WRITE => "Valeur : 7. Échec de l'écriture du fichier sur le disque. Introduit en PHP 5.1.0.",
UPLOAD_ERR_EXTENSION => "Une extension PHP a arrêté l'envoi de fichier. PHP ne propose aucun moyen de déterminer quelle extension est en cause.",
];
$errors = array();
if ($_FILES['avatar']['error'] != 0)
{
$errors['upload_err'] = $array_upload_err[$_FILES['avatar']['error']];
} else {
// Récupère l'extension d'un fichier
$spl_file_info = new SplFileInfo($_FILES['avatar']['name']);
$file_Extension = strtolower($spl_file_info->getExtension());
// Retourne le type mime à l'extension mimetype
$finfo = new finfo(FILEINFO_MIME_TYPE);
/* Récupère le mime-type d'un fichier spécifique */
$file_MimeType = $finfo->file($_FILES['avatar']['tmp_name']);
// Retourne la taille d'une image
list($width, $height, $type, $attr) = getimagesize($_FILES['avatar']['tmp_name']);
// On vérifie la taille, en octets, du fichier téléchargé
if ($_FILES['avatar']['size'] > UPLOAD_SIZEMAX_PHOTO) {
$errors['size'] = 'Taille de fichier supérieure à la taille maxi autorisée';
}
// On vérifie l'extension
if (!in_array($file_Extension, explode(',', constant('UPLOAD_EXTENSION_PHOTO'))))
{
$errors['ext'] = 'L\'extension ne correspond pas aux extensions acceptées';
}
// On vérifie le type mime
if (!in_array($file_MimeType, explode(',', constant('UPLOAD_MIMETYPE_PHOTO'))))
{
$errors['ext'] = 'L\'extension ne correspond pas aux extensions acceptées';
}
if (empty($errors))
{
$key = sha1($user_id . $username) . '.' . $file_Extension; // Je génère un nom pour l'upload grâce à l'id et pseudo du membre connecté.
if (move_uploaded_file($_FILES['avatar']['tmp_name'], UPLOAD_REP_PHOTO . $key)) {
$_SESSION['flash']['success'] = 'Upload effectué avec succès !';
} else {
$errors['echec'] = 'Echec de l\'upload !';
}
}
}
} |
Partager