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 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
| <?php
function listing($repertoire){
$fichier = array();
if (is_dir($repertoire)){
$dir = opendir($repertoire); //ouvre le repertoire courant désigné par la variable
while(false!==($file = readdir($dir))){ //on lit tout et on récupere tout les fichiers dans $file
if(!in_array($file, array('.','..'))){ //on eleve le parent et le courant '. et ..'
$page = $file; //sort l'extension du fichier
$page = explode('.', $page);
$nb = count($page);
$nom_fichier = $page[0];
for ($i = 1; $i < $nb-1; $i++){
$nom_fichier .= '.'.$page[$i];
}
if(isset($page[1])){
$ext_fichier = $page[$nb-1];
if(!is_file($file)) { $file = '/'.$file; }
}
else {
if(!is_file($file)) { $file = '/'.$file; } //on rajoute un "/" devant les dossier pour qu'ils soient triés au début
$ext_fichier = '';
}
if($ext_fichier != 'php' and $ext_fichier != 'html') { //utile pour exclure certains types de fichiers à ne pas lister
array_push($fichier, $file);
}
}
}
}
natcasesort($fichier); //la fonction natcasesort( ) est la fonction de tri standard sauf qu'elle ignore la casse
foreach($fichier as $value) {
echo '<a href="'.rawurlencode($repertoire).'/'.rawurlencode(str_replace ('/', '', $value)).'">'.$value.'</a><br />';
}
} ?>
<html>
<head></head>
<body bgcolor="#FFE97F">
<table border=0 width="100%">
<tr>
<td valign="top">
<h1><u>Placer un document:</u></h1><br />
<form method="post" enctype="multipart/form-data" action="index.php?data=envoie" name="formulaire">
<label for="dossier">Dans quel dossier souhaitez-vous placer le document?</label><br />
<select name="dossier" id="dossier">
<?php $dir = opendir('./');
while ($file = readdir($dir)) {
if(strpos($file,'.') === false) {?>
<option value="<?php echo $file; ?>"><?php echo $file; ?></option>
<?php }
}
?>
</select>
<br />
Document: <br />
<input type="file" id="document" name="document"><br /><br />
<input type="submit" name="submit" value="Envoyer" /> <br /><br />
<?php
if( $_GET['data']==envoie ) // si formulaire soumis
{
if(isset($_FILES['document']))
{
$dossier = $_POST['dossier'];
$fichier = basename($_FILES['document']['name']);
$taille_maxi = 1000000;
$taille = filesize($_FILES['document']['tmp_name']);
$extensions = array('.doc', '.docx', '.txt');
$extension = strrchr($_FILES['document']['name'], '.');
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez uploader un fichier de type doc, docx ou txt';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
//On formate le nom du fichier ici...
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
if(move_uploaded_file($_FILES['document']['tmp_name'], $dossier .'/'. $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Upload effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';
}
}
else
{
echo $erreur;
}
}
}
?> </td>
<td valign="top"><h1><u> Prendre un document</u></h1><br />
<?php
listing('.');?>
</td>
</tr>
</table>
</body>
</html> |
Partager