<?php
/*Changelog:
1.0: Version à peine fonctionelle basée sur un tutoriel sur internet, le code ne fait aucune verifications.
1.1: Implémentation de quelques vérifications basiques sur le fichier envoyé basiques ( Taille, extensions ).
1.2: Implémentation de la page Web actuelle avec un peu de CSS, et du code de retour d'erreur pour affichage à l'utilisateur.
1.3: Modification avancée du code PHP pour une sanitisation optimale, et support de beaucoup plus de codes erreur côté serveur.
1.4: Implémentation du javascript sur la page pour vérification du fichier côté client avant l'envoi ( les vérification côté serveur sont toujours faites ).
1.5: Support du modificateur "/?d=upload-tool" pour les outils de mise en ligne pour avoir un retour d'erreur ou du lien direct, sans la page web autour.*/

/*Ici j'enregistre une fonction qui sert à "simplifier" le poids (informatique d'un fichier).
PHP utilise les octets pour calculer le poids d'un fichier. C'est pas gênant pour un codeur, 
mais pour un utilisateur, on va pas lui dire "Le fichier ne doit pas dépasser 15728640 octets".

La fonction est simple, on fournis en entrée le $size qui sera le poids en octets, et de manière optionnelle
$precision afin de contrôler le nombre de chiffres après la virgule. (Par défaut, 2)

En sortie on obtient le poids avec un suffixe rationnel ( Ko, Mo, ect... )
On l'utilisera plus tard.
Pour être franc, c'est pas moi qui à écrit cette fonction, j'ai trouvé ça sur internet :)*/
function formatBytes$size$precision )
{
    
$base     log$size ) / log1024 );
    
$suffixes = array(
        
'octets',
        
'Ko',
        
'Mo',
        
'Go',
        
'To' 
    
);
    
    return 
roundpow1024$base floor$base ) ), $precision ) . ' ' $suffixesfloor$base ) ];
}
/*Une autre fonnction trouvée sur le web pour rendre le nom des fichiers url-friendly.*/
function friendlyUrl($url) {
    
// everything to lower and no spaces begin or end
    
$url strtolower(trim($url));
 
    
//replace accent characters, depends your language is needed
    
$url=replaceAccents($url);
 
    
// decode html maybe needed if there's html I normally don't use this
    //$url = html_entity_decode($url,ENT_QUOTES,'UTF8');
 
    // adding - for spaces and union characters
    
$find = array(' ''&''\r\n''\n''+',',');
    
$url str_replace ($find'-'$url);
 
    
//delete and replace rest of special chars
    
$find = array('/[^a-z0-9\-<>]/''/[\-]+/''/<[^>]*>/');
    
$repl = array('''-''');
    
$url preg_replace ($find$repl$url);
 
    
//return the friendly url
    
return $url
}
//Extension de la fonction d'avant pour la gestion des caractères accentués et spéciaux.
function replaceAccents($var){ 
    
$a = array('À''Á''Â''Ã''Ä''Å''Æ''Ç''È''É''Ê''Ë''Ì''Í''Î''Ï''Ð''Ñ''Ò''Ó''Ô''Õ''Ö''Ø''Ù''Ú''Û''Ü''Ý''ß''à''á''â''ã''ä''å''æ''ç''è''é''ê''ë''ì''í''î''ï''ñ''ò''ó''ô''õ''ö''ø''ù''ú''û''ü''ý''ÿ''A''a''A''a''A''a''C''c''C''c''C''c''C''c''D''d''Ð''d''E''e''E''e''E''e''E''e''E''e''G''g''G''g''G''g''G''g''H''h''H''h''I''i''I''i''I''i''I''i''I''i''?''?''J''j''K''k''L''l''L''l''L''l''?''?''L''l''N''n''N''n''N''n''?''O''o''O''o''O''o''Œ''œ''R''r''R''r''R''r''S''s''S''s''S''s''Š''š''T''t''T''t''T''t''U''u''U''u''U''u''U''u''U''u''U''u''W''w''Y''y''Ÿ''Z''z''Z''z''Ž''ž''?''ƒ''O''o''U''u''A''a''I''i''O''o''U''u''U''u''U''u''U''u''U''u''?''?''?''?''?''?'); 
    
$b = array('A''A''A''A''A''A''AE''C''E''E''E''E''I''I''I''I''D''N''O''O''O''O''O''O''U''U''U''U''Y''s''a''a''a''a''a''a''ae''c''e''e''e''e''i''i''i''i''n''o''o''o''o''o''o''u''u''u''u''y''y''A''a''A''a''A''a''C''c''C''c''C''c''C''c''D''d''D''d''E''e''E''e''E''e''E''e''E''e''G''g''G''g''G''g''G''g''H''h''H''h''I''i''I''i''I''i''I''i''I''i''IJ''ij''J''j''K''k''L''l''L''l''L''l''L''l''l''l''N''n''N''n''N''n''n''O''o''O''o''O''o''OE''oe''R''r''R''r''R''r''S''s''S''s''S''s''S''s''T''t''T''t''T''t''U''u''U''u''U''u''U''u''U''u''U''u''W''w''Y''y''Y''Z''z''Z''z''Z''z''s''f''O''o''U''u''A''a''I''i''O''o''U''u''U''u''U''u''U''u''U''u''A''a''AE''ae''O''o'); 
    
$varstr_replace($a$b,$var);
    return 
$var
}

/*Ici je garde les principaux paramètres que je serais éventuellement amené à modifier pour des raisons
personnelles.
$taillemaxi contrôle, vous l'aurez deviné, la taille maximum autorisée (à exprimer en octets).
$dossier contrôle dans quel dossier les fichiers seront stockés. Pour l'instant dans mon cas il sont
mis dans un dossier /files suivi de /LaDateDuJour pour que ce soit simple de retrouver quelque chose.
$extensions contrôle la liste des extensions autorisés dans une array*/
$taillemaxi 104857600;

$dossier Date"Y-m-d/" );
$extensions = array(
       
'.png',
       
'.gif',
       
'.jpg',
       
'.jpeg',
       
'.bmp',
       
'.mp3',
    
'.txt',
    
'.exe',
    
'.mp4',
    
'.webm',
    
'.pdf',
    
'.zip',
    
'.rar',
    
'.xlsx',
    
'.mkv',
    
'.gifv',
);

//Ici je formate la taille maximum en quelque chose de lisible pour un utilistateur($usertaillemaxi). Exemple: 15 Mo
$usertaillemaxi formatBytes$taillemaxi );

/*Ici je recréer la liste des extensions autorisée en une seule ligne($userextension), encore une fois pour affichage
à l'utilisateur, séparés par une virgule. On retirera la dernière virgule par propreté, et pour qu'elle fonctionne
dans la balise "accept" du formulaire HTML.
L'array continuera d'être utilisée dans le code, ça c'est juste pour l'utilisateur.*/ 
$userextensions "";
foreach ( 
$extensions as $tempvalue ) {
    
$userextensions "$userextensions $tempvalue,";

    
$userextensions substr($userextensions,0,-1);

/*Si l'utilisateur demande le code source, on le fait et on arrête tout*/
if ( isset($_GET'source' ]) ) { if ($_GET'source' ] == '1' ) { exit(highlight_file("index.php",TRUE)); }}

/*Premier cas qui sera géré ( le plus long ), "si l'utilisateur soumet des données".
( Donc, si la méthode d'accès à la page est un "post" c'est que l'utilisateur à rempli
le formulaire et qu'une image à probablement été attachée )*/
if ( isset($_GET'd' ]) ) { if ($_GET'd' ] == 'upload-tool' ) { $uploadtool 1; }} else { $uploadtool 0; }
if ( 
$_SERVER'REQUEST_METHOD' ] == "POST" ) {
    
/*A partir d'ici, les erreurs potentielles sont écrites séquentiellement. Donc celle qui sera écrite en dernière
    sera celle qui sera montrée à l'utilisateur. On procède donc par ordre décroissant de gravité d'erreur.
    La valeur $erreur est ce qu'on va montrer à l'utilisateur une fois le script terminé.
    On va quand même faire un peu de traitement d'information sur le fichier reçu.*/
    
    /*On va utiliser la variable $fichier pour déterminer le nom du fichier qu'on va écrire
    Pour commencer on va se baser sur le nom que l'utilisateur à donné à son fichier*/
    
$fichier basename$_FILES'filetomove' ][ 'name' ] );
    
/*Ensuite on détermine $fichier, et on retire son extension pour obtenir seulement le nom
    du fichier que l'utilisateur à mis.*/    
    
if ( substr$fichier0strrpos$fichier"." ) ) != NULL ) {
        
$fichier substr$fichier0strrpos$fichier"." ) );
    }
    
/*Ici on récupère l'extension (en minuscules) pour déterminer $extension.
    C'est important de l'écrire en minuscules... Sinon mon OCD me gratte*/
    
$extension strtolowerstrrchr$_FILES'filetomove' ][ 'name' ], '.' ) );
    
    
//On assigne $taille à la taille du fichier récupéré.
    
$taille $_FILES'filetomove' ][ 'size' ];
    
    
//On compare $taille à la $taillemaxi.
    
if ( $taille $taillemaxi ) {
        
//Si la taille est trop grosse, on informe l'utilisateur, et on formate $taille en quelque chose de lisible
        
$taille formatBytes$taille );
        
$erreur "Le fichier envoyé est trop gros ($taille), essayez avec un fichier plus petit.";
        
$typeerreur 'error';
        }

    
/*Ici c'est pour vérifier les problèmes liés à l'extension du fichier.
    On vérifie plusieurs choses pour valider cette condition: Si l'extension du fichier ne fais
    partie des extensions autorisées OU si le fichier à bien un nom    et qu'il n'a pas d'extension.*/
    
if ( in_array$extension$extensions ) == FALSE || ( $fichier != NULL && $extension == NULL ) ) {
        
//Si il n'a pas d'extension...
        
if ( !$extension ) {
            
$erreur "Vous devez envoyer un fichier avec une extension.";
            
$typeerreur 'error';
        }
        
//Si on est rentré dans cette condition et qu'il y avait bien une extension, c'est qu'elle n'est pas autorisée.
        
else {
            
$erreur "L'extension $extension n'est pas supportée.";
                  
$typeerreur 'error';
        }
    }
    
    
/*Même si le fichier à une extension, on vérifie si le fichier à un nom. Si $fichier n'existe pas, soit
    l'utilisateur n'a pas soumis de fichier, soit il a juste soumis une extension sans nom.
    Il parait que PHP peut faire un retour erreur lui-même si il manque le fichier, quel que soit le nom, mais bon, de toute façon
    si l'utilisateur arrive à soumettre un fichier qui n'a pas de nom, ca reste louche, autant ne pas le laisser passer.*/
    
if ( $fichier == NULL ) {
        
$erreur 'Fichier manquant ou sans nom. Merci de bien sélectionner le fichier avant l\'envoi, et de lui donner un nom correct.';
        
$typerreur 'error';

    }     
    
    
/*Avant écriture possible je vérifie si le 
    dossier dans lequel on va écrire le fichier existe, sinon, on tente de le créer avec les droits 775
    Si la création du dossier est un échec, on le signale à l'utilisateur*/
    
if ( file_exists$dossier ) == FALSE ) {
        if ( 
mkdir$dossier0775true ) == FALSE) { 
            
$erreur "Impossible de créer le dossier $dossier sur le serveur. Merci de contacter l'administrateur.";
                  
$typerreur 'error';
        }
    }
    
    
/*Ici c'est le coin des erreurs identifiées côté serveur. Elles ont un retour facile via PHP, mais elles sont vérifiés en dernières car
    comme expliqué plus haut, c'est les plus graves, donc les plus probables d'être la cause d'une erreur.
    $servererrornum à 0 signifie que PHP n'a rencontré aucune de ces erreurs.*/
    
$servererrornum $_FILES'filetomove' ][ 'error' ];
    
    if ( 
$servererrornum != ) {
        
$typeerreur 'error';
        if ( 
$servererrornum == ) {
            
$erreur "Erreur serveur: Le fichier envoyé dépasse la taille maximale autorisée par PHP.<br>Reportez vous à votre configuration PHP(.ini), variable \"upload_max_filesize\", ou contactez l'administrateur.";
            }
        if ( 
$servererrornum == ) {
            
/*Il parait que cette erreur est bidon vu que le client ne vérifie jamais le MAX_FILE_SIZE sur un formulaire HTML, et PHP n'est absolument pas au courant du contexte de l'envoi.
            Elle est quand même documentée et implémentée, donc bon... Je fais quand même l'effort.*/
            
$erreur "Le fichier envoyé est trop gros, essayez avec un fichier plus petit.";
        }         
        if ( 
$servererrornum == ) {
            
$erreur "Erreur serveur: Le téléchargement du fichier à été interrompu de manière inattendue. Merci de réessayer.";
        }
              if ( 
$servererrornum == ) {
            
$erreur "Fichier manquant. Merci de bien sélectionner le fichier avant l'envoi.";
            }         
        if ( 
$servererrornum == ) {
            
$erreur "Erreur serveur: Le dossier temporaire du moteur PHP est introuvable.<br>Reportez vous à votre configuration PHP(.ini), variable \"upload_tmp_dir\, ou contactez l'administrateur.";
                }         
        if ( 
$servererrornum == ) {
            
$erreur "Erreur serveur: Échec de l'écriture sur le disque. Merci de réessayer plus tard ou contactez l'administrateur.";
            }         
        if ( 
$servererrornum == ) {
            
$erreur "Erreur serveur: Une extension de PHP à stoppé le téléchargement du fichier. Merci de réessayer plus tard ou contactez l'administrateur.";
                }     
    }
    
    
/*Ca en a fait des chose à vérifier! Mais si jusque là tout va bien ( donc que $erreur n'a pas été rempli ) on commence à traiter le fichier*/
    
if ( !isset( $erreur ) ) {
        
/*Avant de l'écrire on fais du nettoyage sur le nom du fichier pour le rendre conforme au standard alphabétique.
        J'avoue aussi avoir pris les deux prochaines lignes sur internet. Je ne connais rien au Regex*/
        
$fichier friendlyUrl($fichier);
        
$fichier substr($fichier,0,240);
        
$fichiertemp $fichier;
        
/*Ici j'ai créé une boucle qui vérifie si le fichier qu'on tente d'écrire existe déjà.
        (Notamment si l'utilisateur upload un fichier avec un même nom.) Si il existe, on va 
        créer une séquence de chiffres et de lettres aléatoires qu'on va rajouter à la fin du nom du fichier pour le rendre unique.
        Par défaut, le système ne rajoutera que 5 caractères ( modifiable ) à la fin, mais si par hasard au bout de 20 tentatives
        il n'arrive toujours pas à créer un fichier qui n'existe pas déjà sur le serveur, il va incrémenter le nombre de caractères,
        jusqu'à arriver à écrire un fichier unique. 
        Le but final est de rajouter le $randomstring généré à $fichier (avec un tiret entre les deux).*/
        
while ( file_exists$dossier $fichier $extension ) ) {
            
$characters   '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'//Liste des caractères possibles qu'on rajoutera à la fin du fichier.            
            
$length       5//Nombre de caractères à rajouter après le nom du fichier en cas de doublons.            
            
$maxloops     20//Nombre maximum de tentatives de trouver un nom unique avant d'incrémenter le nombre de caractères supplémentaires.            
            
            
$randomstring '';
            for ( 
$i 0$i $length$i++ ) {
                if ( 
$maxloops == ) {
                    
$length += 1;
                    
$maxloops 20;
                }                 
                
$randomstring .= $charactersrand0strlen$characters ) - ) ];
                
$maxloops -= 1;
            }             
            
$fichier $fichiertemp '-' $randomstring;
        }
    
        
/*Après tout ce traitement on tente d'écrire le fichier avec les information qu'on a.*/
        
if ( move_uploaded_file$_FILES'filetomove' ][ 'tmp_name' ], $dossier $fichier $extension ) ) {
            if ( 
$uploadtool == ) { $erreur "https://www.destrid.com/upload/$dossier$fichier$extension"; }
            else { 
$erreur "Upload effectué avec succès ! Lien vers le fichier:<br><br><input style=\"text-align: center;\"  value=\"https://www.destrid.com/upload/$dossier$fichier$extension\" size=\"75\" onClick=\"this.select();\" onchange=\"this.value='https://www.destrid.com/upload/$dossier$fichier$extension';this.select();\" onkeyup=\"this.value='https://www.destrid.com/upload/$dossier$fichier$extension';this.select();\" onkeydown=\"this.value='https://www.destrid.com/upload/$dossier$fichier$extension';this.select();\"><br><br>Vous pouvez dès à présent envoyer un autre fichier."; }
            
$typeerreur 'success';
              }         
        else {
            
/*Si on se tappe une erreur ici, c'est qu'on est tombé sur un cas qu'on a pas prévu...
            Comming so far, only to fail...*/
            
$erreur 'Erreur inattendue lors de l\'upload, merci de réessayer. Si le problème persiste, contactez l\'administrateur.';
            
$typeerreur 'error';
        }
        
    }     

/*Ce "Sinon" concerne la condition "Si la requête est un post".
Donc, si la requête n'est pas un post, on imagine que c'est un GET
(et je parle pas des dubs sur 4chan).
Si l'utilisateur ne fais que demander la page, on lui affiche un message de bienvenue, et on ne traite rien.*/
else {
    
$erreur 'Bienvenue! Vous pouvez soumettre votre fichier ci dessous.';
    
$typeerreur 'info';
}
/*Une fois qu'on à traité tout côté serveur, et qu'on a des variables au point, on envoi la page HTML au client.
C'est une petite page codée rapidement, mais elle remplit bien son oeuvre :)*/
if ( $uploadtool == && $typeerreur!='info' ) { echo $erreur; }
else{
echo <<<page
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html/css/javascript;charset=UTF-8;lang=fr">
    <meta name="keywords" content="images, image, pictures, picture, upload, file, files, destrid, destrid.com">
    <meta name="description" content="Simple site pour upload vos fichiers images, et autres.">
    <meta name="author" content="Destrid">
    <title>Page d'accueil - Upload.destrid.com</title>
    <link rel="icon" type="image/x-icon" href="images/favicon.ico">
    <link rel="apple-touch-icon-precomposed" href="images/ftpackage-network-152-116281.png">
    <meta name="msapplication-TileColor" content="#ffffff" />
    <meta name="msapplication-TileImage" content="images/ftpackage-network-144-116281.png">
    <link rel="apple-touch-icon-precomposed" sizes="152x152" href="images/ftpackage-network-152-116281.png">
    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="images/ftpackage-network-144-116281.png">
    <link rel="apple-touch-icon-precomposed" sizes="120x120" href="images/ftpackage-network-120-116281.png">
    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="images/ftpackage-network-114-116281.png">
    <link rel="apple-touch-icon-precomposed" sizes="72x72" href="images/ftpackage-network-72-116281.png">
    <link rel="apple-touch-icon-precomposed" href="images/ftpackage-network-57-116281.png">
    <link rel="icon" href="images/ftpackage-network-32-116281.png" sizes="32x32">
    <style type="text/css">

    html,body,div,h1 { border-style: none; border: 0px; margin: 0px; padding: 0px; }


    html,body { position: relative; min-height:480px; min-width:900px; height:100%; width:100%; }

    #divTitle,#divFooter { min-width:900px; }

    body { background: url('images/background.jpg') #CCCCCC no-repeat fixed center center; background-size:cover; 
    font-size:0.875em;}


    #site { position:relative; height: 100%; width: 100%; }


    #divTitle { position: absolute; display: table; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAKCAQAAADf2/zBAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAGElEQVQI12No+M/E9p6J7R0T+zsECWMAAJuKCiqznk2dAAAAAElFTkSuQmCC) repeat-x; background-size:1px 100%; width: 100%; height: auto; text-align: center; }

    .title { height: 100%; display: table-cell; vertical-align: middle; }

    #divTitle2 { width: auto; }

    #divTitle1 { width: 100px; padding-right: 150px; }

    #divTitle3 { width: 250px; }


    #divBody { width: 100%; height: 100%; display: table; }

    .body {  }

    #divBody1 { display: table-cell; vertical-align: middle; width: 100%; text-align: center; }

    .bodyContent { display: table; border: 5px solid black;background:#CCCCCC; margin-left:auto; margin-right:auto; text-align: center; width: 680px; padding-top: 20px; padding-bottom: 10px; padding-left: 20px; padding-right:20px; }

    #divFooter { position: absolute; bottom: 0px ; display: table; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAKCAQAAADf2/zBAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAGElEQVQI12No+M/E9p6J7R0T+zsECWMAAJuKCiqznk2dAAAAAElFTkSuQmCC); repeat-x; background-size:1px 100%; width: 100%; height: 30px; text-align: center; }

    .footer { height: 100%; display: table-cell; vertical-align: middle; }

    #divFooter1 { width: 300px; }

    #divFooter2 { width: auto; }

    #divFooter3 { width: 200px; padding-left: 100px; }

    .footerContent {  }

    .info {
    color: #00529B;
    background-color: #BDE5F8;
    background-image: url('/images/info.png');
    }
    .success {
    color: #4F8A10;
    background-color: #DFF2BF;
    background-image:url('/images/success.png');
    }
    .warning {
    color: #9F6000;
    background-color: #FEEFB3;
    background-image: url('/images/warning.png');
    }
    .error {
    color: #D8000C;
    background-color: #FFBABA;
    background-image: url('/images/error.png');
    }

    .info, .success, .warning, .error {
    font-weight: bold;
    border: 1px solid;
    margin: 0px 0px 0px 0px;
    padding:3px 10px 3px 40px;
    background-repeat: no-repeat;
    background-position: 10px center;
    background-size: 20px 20px;

    }

</style>
</head>

<body>
    <div id="site">
        <div id="divTitle">
            <div class="title" id="divTitle1">
                <div class="titleContent">
                    <a href="/">Home</a>
                </div>
            </div>

            <div class="title" id="divTitle2">
                <div class="titleContent">
                    <h1>Page d'upload de fichiers et images - Destrid.com</h1>
                </div>
            </div>

            <div class="title" id="divTitle3">
                <div class="titleContent">
                    
                </div>
            </div>
        </div>

        <div id="divBody">
            <div id="divBody1" class="body">
                <div class="bodyContent">
                    <div id="infodiv" class="
$typeerreur">$erreur</div><br>
                    Liste des extensions de fichiers supportées:<br>
                    <br>
                    <b>
$userextensions</b><br>
                    <br>
                    Taille maximum autorisée:
                    <b>
$usertaillemaxi</b><br>
 
                    <form action="" enctype="multipart/form-data" method="post">
                    <p>Fichier : <input id="fileinput" name="filetomove" type="file"
                    accept="
$userextensions" data-maxsize="$taillemaxi"><input type="reset" style="display: none;" id="reset">
                    <input name="envoyer" type="submit" value="Envoyer le fichier"></p>
                    </form>
                </div>
            </div>
        </div>

        <div id="divFooter">
            <div class="footer" id="divFooter1">
                <div class="footerContent">
                    Version actuelle: <b>1.5</b> || <a href="?source=1">Code Source</a>
                </div>
            </div>

            <div class="footer" id="divFooter2">
                <div class="footerContent">
                    
                </div>
            </div>

            <div class="footer" id="divFooter3">
                <div class="footerContent">
                    Développé par <a href=
                    "mailto:destrid@destrid.com">Destrid</a>
                </div>
            </div>
        </div>
    </div>
<script type="text/javascript">
var input = document.getElementById('fileinput');
input.onchange = function() {
var reset = document.getElementById('reset');
var aFiles = this.files[0];
var iSize = aFiles.size;
var sType = '.' + aFiles.name.split('.').pop();
var aUserType = this.getAttribute('accept').split(',');
var iMaxSize = parseInt(this.dataset.maxsize, 10);
var oDivErreur = document.getElementById('infodiv');
var aErreurs = [];
if(iSize > iMaxSize) {
   aErreurs.push('Le fichier envoyé est trop gros, essayez avec un fichier plus petit.');
 }
var bExtensionAutorise = false;
  for(var i = 0, len = aUserType.length; i < len; i++) {
    if(sType.toLowerCase() === aUserType[i].trim()) {
    bExtensionAutorise = true;
    break;
   }
  }
if(!bExtensionAutorise) {
   aErreurs.push('L\'extension ' + sType + ' n\'est pas supportée.');
  }
if(aErreurs.length > 0) {
   oDivErreur.innerHTML = aErreurs.join('<br>');
   oDivErreur.className = 'warning';
   reset.click();
  } 
  else {
   oDivErreur.innerHTML = 'Votre fichier est valide, et il est prêt à être envoyé.';
   oDivErreur.className = 'success';
  }
 }
</script>
</body>
</html>
page;
}
?>