EXPLORATEUR DE FICHIER EN PHP

Utilisateur anonyme - 4 août 2005 à 21:15
 erikH - 18 juil. 2017 à 14:51
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/32849-explorateur-de-fichier-en-php

Bonjour je n'arrive pas le faire fonctionner sur mon serveur local EasyPhp
-> je le mets dans un dossier de mon site
-> je changer $rootdir='./' et $imagedir'./images/
mais lorsque je lance la page il y à tout le code php s'affiche en partie sur l'ecran
tikitoun Messages postés 1 Date d'inscription lundi 13 juin 2005 Statut Membre Dernière intervention 11 mars 2008
11 mars 2008 à 17:36
Bonjour,
J’aimerai placer se script dans une interface Admin., mais j’aimerai que le script agisse que sur mon dossier «upload » qui se trouve à la racine du site. (Alors que mon script se situ /admin/gestion/ ..)
Comment dois-je modifier le script pour lui dire d’agir que dans le répertoire « upload »?

Merci d’avance.
Guiom60 Messages postés 8 Date d'inscription vendredi 11 mai 2007 Statut Membre Dernière intervention 13 mai 2007
13 mai 2007 à 00:19
Yess ! C'est super jolie, mais je me rend compte que je n'ai psa besoin de ceci sur mon site ^^

Encore merci.
Guiom60 Messages postés 8 Date d'inscription vendredi 11 mai 2007 Statut Membre Dernière intervention 13 mai 2007
13 mai 2007 à 00:16
Donc avec la même manipulation et en changeant l'etat du dossier ça passera ?

Je vais essayer ... Je vais d'abord chercher comment faire ça ^^

Merci Emmash !
Utilisateur anonyme
12 mai 2007 à 17:51
En fait, tu dois avoir les droits en écriture sur le dossier spécifié... en principe, tu devrais, pour le rootdir, entrer http://monnom.free.fr/ftp/ et mettre le dossier ftp en CHMOD 777 (Tous les droits d'exécution, de lecture et d'écriture).
Guiom60 Messages postés 8 Date d'inscription vendredi 11 mai 2007 Statut Membre Dernière intervention 13 mai 2007
11 mai 2007 à 22:47
Je suis egalement débutant et je n'arrive pas a utiliser ce code.

J'ai téléchargé le zip, envoié le packtage dans la racine de mon hébergeur. Admetons http://monnom.free.fr (Je suis chez free)

J'ai modifié ces lignes :

$rootdir = "http://monnom.free.fr/";
$imagedir = "http://monnom.free.fr/images/dir.png";

Message affiché : "Unable to get access to http://monnom.speurt.free.fr/, contact your web administrator."

J'imagine que la manipultation etait super simple, mais je l'ai raté :\

Une petite explication ?
astuceur Messages postés 38 Date d'inscription lundi 10 février 2003 Statut Membre Dernière intervention 21 septembre 2008
4 nov. 2006 à 17:57
Je suis débutant je cherchais un script comme çà depuis longtemps, merci beaucoup. Très bon boulot = Bonne note :p
akatopaz Messages postés 1 Date d'inscription mercredi 22 novembre 2000 Statut Membre Dernière intervention 18 août 2006
18 août 2006 à 17:57
Je compte mettre en ligne une version un peu plus evoluée. je vous tiens au courant, et désolé de ne pas etre très présent, je bosse pour mes etudes, et je n'ai pas beaucoup de temps à accorder à ces petits codes ...
merci à tous de votre soutien.
aicfr Messages postés 12 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 19 juin 2006
19 juin 2006 à 11:03
Toute les explications sont ici:
http://www.phpfrance.com/tutoriaux/index.php/2005/04/26/30-lupload-de-fichiers

RUBRIQUE: Envoyer des fichiers volumineux
aicfr Messages postés 12 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 19 juin 2006
19 juin 2006 à 10:58
aicfr Messages postés 12 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 19 juin 2006
18 juin 2006 à 23:31
D'après ce que j'ai lu, il serait possible de modifier la configuration de PHP par l'intermediaire d'un .htaccess a une condition: PHP doit être installé en tant que module apache, pas en tant que CGI -> sinon erreur 500.
asfivaio Messages postés 3 Date d'inscription mercredi 7 décembre 2005 Statut Membre Dernière intervention 1 juin 2006
18 juin 2006 à 09:31
Je confirme, j'ai les mêmes problèmes de "virus25" avec le même matériel ! un serveur : Synology DS-101G+
virus25 Messages postés 2 Date d'inscription mardi 13 juin 2006 Statut Membre Dernière intervention 17 juin 2006
17 juin 2006 à 18:58
le problème, c'est que je n'ai pas accès au php.ini, j'ai un serveur NAS avec Linux embarqué en Flashrom, du moins je ne connais pas la manip à faire pour modifier ce fichier

Mon serveur : Synology DS-101G+
aicfr Messages postés 12 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 19 juin 2006
17 juin 2006 à 10:31
Dans le fichier php.ini:

post_max_size = xM
upload_max_filesize = xM
aicfr Messages postés 12 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 19 juin 2006
17 juin 2006 à 10:28
Il me semble que cela est du à un "probleme" de configuration de php
virus25 Messages postés 2 Date d'inscription mardi 13 juin 2006 Statut Membre Dernière intervention 17 juin 2006
17 juin 2006 à 10:04
Bonjour,

excellent code, cependant, est-il possible d'augmenter la taille des fichiers à uploader ? apparemment jusqu'à 3.5Mo c'est bon, au-delà, il ne transfère rien mais en plus il affiche une partie de l'index de mon site

quelqu'un a une soultion ??

merci (un noob du PHP)
aicfr Messages postés 12 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 19 juin 2006
12 juin 2006 à 15:51
Une petite suggestion: il serait peut etre bien d'utiliser la fonction highlight_file pour la colorisation syntaxique de certains fichiers (et peut etre meme ajouter le numero des lignes)?
aicfr Messages postés 12 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 19 juin 2006
12 juin 2006 à 13:28
Bonjour,

Excelent script qui me rend bien des services mais je pense qu'il y a un petit bug au niveau de l'encodage des accents sur le nom des fichiers.
asfivaio Messages postés 3 Date d'inscription mercredi 7 décembre 2005 Statut Membre Dernière intervention 1 juin 2006
9 juin 2006 à 18:17
Bonjour,

J'ai eu comme vous des problèmes pour effacer les fichiers ou les répertoires, j'utilise le code de Marie-Hélène, cela fonctionne très bien, merci a tous le monde pour leurs participation.

Christophe
Utilisateur anonyme
14 nov. 2005 à 20:19
Bon voici le code complet que j'ai modifié pour que la suppression fonctionne...

<?php

function advRmDir($dir)
{


if( !preg_match( "/^.*\/$/", $dir ) ) $dir .= '/';

// Ouverture du repertoire demande
$handle = @opendir( $dir );

// si pas d'erreur d'ouverture du dossier on lance le scan
if( $handle != false )
{

// Parcours du repertoire
while( $item = readdir($handle) )
{
if($item != "." && $item != "..")
{
if( is_dir( $dir.$item ) )
advRmDir( $dir.$item );
else unlink( $dir.$item );
}
}

// Fermeture du repertoire
closedir($handle);

// suppression du repertoire
$res = rmdir( $dir );

}
}


$rootdir = "./documents";
$imagedir = "./images";

if ( ! is_dir($rootdir) )
{
echo "Unable to get access to $rootdir, contact your web administrator.";
die();
}

$currentdir = $_GET['path'];

// on tronque le debut si c'est un /
if ( substr($currentdir,0,1) == "/" )
{
$currentdir = substr($currentdir,1,strlen($currentdir) - 1);
}

// si la fin de $currentdir = .. alors on retourne a la racine de ce dossier
if ( substr($currentdir, strlen($currentdir) - 2, 2) == ".." )
{
// strip last /..
$currentdir = substr($currentdir, 0, strlen($currentdir) - 3);

// strip last /dirname
$currentdir = substr($currentdir, 0, strrpos($currentdir,"/"));
}

// si la fin de $currentdir = /. alors on retourne a la racine de ce dossier
if ( substr($currentdir, strlen($currentdir) - 2, 2) == "/." )
{
$currentdir = substr($currentdir, 0,strlen($currentdir) - 2);
}

// evite tout probleme de securite MAISempeche les nom de rep avec .. dedans
$currentdir = str_replace("..", "", $currentdir);

// on traite les actions spéciales
$action = $_GET['action'];
switch($action)
{
case "mkdir":
if ( isset($_GET['arg'] ) )
{
// evite tout probleme de securite MAIS empeche les nom de rep avec .. dedans
$mkdir = str_replace("..", "", $_GET['arg']);
umask (0);
mkdir($rootdir . "/" . $currentdir . "/" . $mkdir);
}
else
{
$affiche_creer_formulaire = true;

}
break;

case "rm";
if ( isset($_GET['confirmation'] ) )
{
// evite tout probleme de securite MAIS empeche les nom de rep avec .. dedans
$rm = str_replace("..", "", $_GET['path']);

//echo "GET confirmation est setter";

if ( isset($_GET['file']) )
$rm = $rm . "/" . str_replace("..","", $_GET['file']) ;

//echo "GET file est setter";

//echo $rootdir."/".$rm;
//$strFichier="'".str_replace("./","",$rootdir)."/".$rm."'";

//unlink("'".$strFichier."'") ;

//system("rm -r '". $rootdir . "/" . $rm . "'") ;

if(! is_dir($rootdir . "/" . $rm)){
unlink($rootdir . "/" . $rm) ;
}
else{
advRmDir($rootdir . "/" . $rm);
}

}
else
{
if( ! isset($_GET['infirmation']))
$affiche_supprimer_formulaire=true;

}
// si l'on ne supprimait pas un fichier (donc un rep, on doit retourner a la racine quelque soit la reponse
if ( ( isset($_GET['confirmation']) || isset($_GET['infirmation']) ) && ! isset($_GET['file']) )
// strip last /dirname pour retourner au parent du rep en cours
$currentdir = substr($currentdir, 0, strrpos($currentdir,"/"));
break;

case "deconnection":

break;

case "upload":
if ( ! isset($_FILES['uploadFile']) )
$affiche_upload_formulaire = true;
break;

}

// l'upload se fait en post (l'action)
if (isset($_POST['action']) && $_POST['action'] == "upload")
{
if ( isset($_FILES['uploadFile']) )
{
$file_name = $_FILES['uploadFile']['name'];

// strip file_name of slashes
$file_name = stripslashes($file_name);
if ($_POST['date'])
{
$file_name = date("Y-m-d-H\hi-") . $file_name;
}

$uploaddir = $rootdir . "/" . str_replace("..","",urldecode($_POST['path']));

$file_name = $uploaddir . "/" . str_replace("'","",$file_name);
$copy = copy($_FILES['uploadFile']['tmp_name'],$file_name);
// check if successfully copied
if( ! $copy)
{
echo basename($file_name) . " | Impossible d'uploader !
";
}
}
}
?>

<html>
<head>
<title>
Explorateur de fichier - /<?php echo $currentdir; ?>
</title>
<link href ="../style.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
.style25 {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-weight: bold;
font-size: 13px;
}
.style31 {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 15px;
font-weight: bold;
}
-->
</style>
</head>

"> ">
">,
<?= //Déconnecter?>



Vous êtes présentement dans le dossier : <?php

if($currentdir==""){
echo "Accueil";
}
else{
echo "Accueil"."/".$currentdir;
}

?>


<?php

if ( $affiche_creer_formulaire )
{
// affichage du formulaire pour creer un repertoire
?>
<form method="get">
" />

Nom du nouveau dossier :

</form>
<?php
}

if ( $affiche_supprimer_formulaire )
{
// affichage du formulaire pour supprimer un repertoire
?>

<form method="get">
" />
<?
if ( isset($_GET['file']) )
echo "";
?>

Voulez-vous vraiment supprimer <? echo $currentdir . "/"; if (isset($_GET['file'])) echo $_GET['file']; ?> ?

</form>
<?php
}

if ( $affiche_upload_formulaire )
{
?>
<form enctype="multipart/form-data" method="post">

Fichier à ajouter :

">

Ajouter la date dans le nom du fichier </form>
<?php
}

?>, ----

<!-- Colonne pour les repertoires -->

<table width="100%" cellpadding="0" border="0">
----,
<table width=\"100%\" height=\"30\" border=\"0\" background=\"images/fond_toolbar.gif\" class=\"tableau\" style='border:2px solid black'>
----

Dossiers

</td></tr>
<?php
$directory = opendir( $rootdir . "/" . $currentdir );
while( $dir = readdir($directory) )
{
if (is_dir( $rootdir . "/" . $currentdir . "/" . $dir) && $dir != "." )
{
// on affiche pas le .. quand on est a la racine
if( $currentdir == "" && $dir != ".." || $currentdir != "")
{

if($dir == ".."){
echo "<tr><td valign='top' height='25' colspan='2'>";
echo "" . "« Remonter d'un niveau" . "";
}
else{
echo "<tr><td valign='top' height='25'>";
echo "";
echo "</td><td valign='top' width='85%'>";
echo "" . $dir . "";
}

echo "</td><td align=right valign='top'> ";
if ( $dir != ".." )
echo "";
echo "</td></tr>\n";
}
}
}
closedir($directory);
?>
</table>
</td>
<td width=70% valign=top bgcolor="#E5E5E5" class="tableau" style='border:2px solid black'>
<!-- Colonne pour les fichiers -->

<table width=100% height="30" border=0 background="images/fond_toolbar.gif" class="tableau" style='border:2px solid black'>
----, Fichiers</td>

</td></tr>
<?php

$directory = opendir( $rootdir . "/" . $currentdir );
$foundone = false;
while( $file = readdir($directory) )
{
if (is_file($rootdir . "/" . $currentdir . "/" . $file) )
{
$foundone = true;
echo "<tr><td style='border-bottom:1px solid black;'>";
echo " " . $file . "</td><td width=30 height=35' style='border-bottom:1px solid black;' class='style17' align='center'>";
// selon l'extension du fichier
$ext = strtolower(substr($file,strrpos($file,".") + 1,strlen($file) - strrpos($file,".")));
switch($ext)
{
case "gif":
case "jpg":
case "png":
echo "";
break;
default:
if ( is_file( $imagedir . "/" . $ext . ".gif" ) )
echo "";
else
echo strtoupper($ext);
break;
}
echo " </td>";

echo "<td width=15% style='border-bottom:1px solid black;' class='style17' align='center'>".round((filesize($rootdir . "/" . $currentdir . "/" . $file )/1000))." K</td>";
echo "<td style='border-bottom:1px solid black;' align='right'> ";
echo "</td></tr>\n";
}
}
closedir($directory);
if ( ! $foundone)
{
echo "<tr><td colspan=3 align=center class='style25'>
Ce dossier ne contient aucun fichier!

</td></tr>";
}
?>

</table>

</td>
</tr>
</table>

</html>



J'espère que ça va aider quelques-uns d'entre vous!!

Je travaille présentement à rajouter une fonction qui permettra de renommer un dossier ou un fichier... je vous redonne des nouvelles dès que j'aurai trouvé la solution...

Bonne chance!

Marie-Hélène
michmichman Messages postés 79 Date d'inscription jeudi 11 août 2005 Statut Membre Dernière intervention 17 mars 2011
13 nov. 2005 à 19:12
Quelqun pourrait m'indiquer les lignes a modifier et ce qu'il fau que j'ecrive sur celle si!!Svp sa serai super gentil!!

Canuel Michel...

j'ai vraiment besoin d'arriver a inserer ce code sur mon site pour echange de compo musical et sa me ferai plaisir si j'arrivai a le fair!!
crackveill Messages postés 2 Date d'inscription mardi 28 novembre 2000 Statut Membre Dernière intervention 11 octobre 2005
11 oct. 2005 à 18:29
qqun peu m'aider? les dossier ne se supprimes tjs pas malgrès les differente màj...
qqun a t-il reglé ce pb?
crackveill Messages postés 2 Date d'inscription mardi 28 novembre 2000 Statut Membre Dernière intervention 11 octobre 2005
11 oct. 2005 à 18:14
bonsoir Elkava,
il y a surement plus propre à faire mais voilà comment j'ai résolu ce probleme que je rencontré moi aussi...

<?php
$ext = strtolower(substr($file,strrpos($file,".") + 1,strlen($file) - strrpos($file,".")));
$directory = opendir( $rootdir . "/" . $currentdir );
$foundone = false;
while( $file = readdir($directory) )
{
if (is_file($rootdir . "/" . $currentdir . "/" . $file) )
{
$foundone = true;
echo "<tr><td width=30>";

// selon l'extension du fichier
$ext = strtolower(substr($file,strrpos($file,".") + 1,strlen($file) - strrpos($file,".")));
switch($ext)
{
case "gif":
case "jpg":
case "png":
case "tif":
case "bmp":
echo "";
break;
case "htm":
case "php":
case "html":
case "txt":
break;
default:
if ( is_file( $imagedir . "/" . $ext . ".gif" ) )
echo "";
else
echo strtoupper($ext);
break;
}
echo "</td><td>";
switch($ext)
{
case "gif":
case "jpg":
case "png":
case "tif":
case "bmp":
echo "" . $file . "";
echo "</td><td align=right width=15%>";
echo filesize($rootdir . "/" . $currentdir . "/" . $file );
echo " ";
echo "</td></tr>\n";
break;
case "htm":
case "php":
case "html":
case "txt":
break;
}
}
}
closedir($directory);
if ( ! $foundone)
{
echo "<tr><td colspan=3 align=center>Aucun fichier !</td></tr>";
}
?>

je ne fait que debuter en php donc il y a surement plus inteligent à faire...
a+
elkava Messages postés 2 Date d'inscription samedi 17 juillet 2010 Statut Membre Dernière intervention 17 juillet 2010
7 oct. 2005 à 20:25
Bonjour,
merci à l'auteur et à tous les participants de ce très bon script.
J'en suis très content et il fonctionne parfaitement même personnalisé et skinné.

Cependant, une modif reste au-dessus de mes compétences, je cherche à cacher un format de fichier du listing pour en éviter la suppression. Comment faire, j'ai bien essayé quelques modifs mais n'y arrive pas.
Je voudrais que les *.php et *.html ne soient pas visibles... ou visibles mais alors non effaçables !

Merci pour votre aide

elkava
cs_zinzeri Messages postés 1 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 28 septembre 2005
28 sept. 2005 à 17:23
Salut,
Après installation, voici les messages d'erreurs !!

Notice: Undefined index: path in c:\program files\easyphp1-8\www\navigation\index.php on line 11

Notice: Undefined index: action in c:\program files\easyphp1-8\www\navigation\index.php on line 39

Quelqu'un a une idée ?

D'avance merci.
stationm Messages postés 2 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 28 septembre 2005
28 sept. 2005 à 14:23
bonjour,
tout fonctionne parfaitment chez moi. J'essais de modifier le code pour que le nom des répertoires créés s'insère dans un bdd. Au niveau du formulaire de création de répertoire j'ai ajouter le code suivant :
<?php
//connection au serveur
$cnx = mysql_connect(SERVEUR, USER, PASS, DB) ;

//sÈlection de la base de donnÈes:
$db = mysql_select_db(DB) ;

//rÈcupÈration des valeurs des champs:
$nom_rep = $_POST['arg'] ;

?>

<?php

if ( $affiche_creer_formulaire )
{
// affichage du formulaire pour creer un repertoire
?>
<hr>
<form method="get">
" />

Nom du repertoire :

</form>
<?php $sql = "INSERT INTO rep (nom_rep)
VALUES ( '$nom_rep') " ;
$requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
?>
<?php
}
Le problème est que la méthode utilisée par le formulaire est GET, donc j'ai essayé de tout passer en POST mais sans succès.
Je précise que je suis débutant, donc si quelques peut répondre à mon problème ou du moins m'expliquer...merci...
cs_envoyezmoimail Messages postés 4 Date d'inscription lundi 15 décembre 2003 Statut Membre Dernière intervention 22 septembre 2005
22 sept. 2005 à 20:03
merci à toi emmash pour avoir répondu à mon appel au secours !

ca fait 3 jours que je cherche mais en vain ... je suis débutant en PHP et j'essaie de me débrouiller mais là !...

j'ai essayé ta solution et j'arrive à supprimer des fichiers mais pas des répertoires ...

voici le code complet :

<?php
function advRmDir($dir)
{
if( !preg_match( "/^.*\/$/", $dir ) )
{
$dir .= '/';
// Ouverture du repertoire demande
$handle = @opendir( $dir );

// si pas d'erreur d'ouverture du dossier on lance le scan
if( $handle != false )
{
// Parcours du repertoire
while( $item = readdir($handle) )
{
if($item != "." && $item != "..")
{
if( is_dir( $dir.$item ) )
{
advRmDir( $dir.$item );
}
else
{
unlink($dir.$item);
}
}
}

// Fermeture du repertoire
closedir($handle);

// suppression du repertoire
$res = rmdir( $dir );
}
}
}

$rootdir = "./documents";
$imagedir = "./images";

if ( ! is_dir($rootdir) )
{
echo "Impossible d'acceder a $rootdir ! Contactez moi";
die();
}

$currentdir = $_GET['path'];

// on tronque le debut si c'est un /
if ( substr($currentdir,0,1) == "/" )
{
$currentdir = substr($currentdir,1,strlen($currentdir) - 1);
}

// si la fin de $currentdir = .. alors on retourne a la racine de ce dossier
if ( substr($currentdir, strlen($currentdir) - 2, 2) == ".." )
{
// strip last /..
$currentdir = substr($currentdir, 0, strlen($currentdir) - 3);

// strip last /dirname
$currentdir = substr($currentdir, 0, strrpos($currentdir,"/"));
}

// si la fin de $currentdir = /. alors on retourne a la racine de ce dossier
if ( substr($currentdir, strlen($currentdir) - 2, 2) == "/." )
{
$currentdir = substr($currentdir, 0,strlen($currentdir) - 2);
}

// evite tout probleme de securite MAIS empeche les noms de rep avec .. dedans
$currentdir = str_replace("..", "", $currentdir);

// on traite les actions spéciales
$action = $_GET['action'];
switch($action)
{
case "mkdir":
if ( isset($_GET['arg'] ) )
{
// evite tout probleme de securite MAIS empeche les noms de rep avec .. dedans
$mkdir = str_replace("..", "", $_GET['arg']);
umask (0);
mkdir($rootdir . "/" . $currentdir . "/" . $mkdir);
}
else
{
$affiche_creer_formulaire = true;

}
break;

case "rm";
if ( isset($_GET['confirmation'] ) )
{
// evite tout probleme de securite MAIS empeche les noms de rep avec .. dedans
$rm = str_replace("..", "", $_GET['path']);

if (isset($_GET['file']))
$rm = $rm . "/" . str_replace("..","", $_GET['file']) ;

if(! is_dir($rootdir . "/" . $rm))
{
unlink($rootdir . "/" . $rm) ;
}
else
{
advRmDir($rootdir . "/" . $rm);
}
}
else
{
if( ! isset($_GET['infirmation']))
$affiche_supprimer_formulaire=true;
}

// si l'on ne supprimait pas un fichier (donc un rep, on doit retourner a la racine quelque soit la reponse
if ( ( isset($_GET['confirmation']) || isset($_GET['infirmation']) ) && ! isset($_GET['file']) )
// strip last /dirname pour retourner au parent du rep en cours
$currentdir = substr($currentdir, 0, strrpos($currentdir,"/"));
break;

// case "deconnection":

// break;

case "upload":
if ( ! isset($_FILES['uploadFile']) )
$affiche_upload_formulaire = true;
break;

}

// l'upload se fait en post (l'action)
if (isset($_POST['action']) && $_POST['action'] == "upload")
{
if ( isset($_FILES['uploadFile']) )
{
$file_name = $_FILES['uploadFile']['name'];

// strip file_name of slashes
$file_name = stripslashes($file_name);
if ($_POST['date'])
{
$file_name = date("Y-m-d-H\hi-") . $file_name;
}

$uploaddir = $rootdir . "/" . str_replace("..","",urldecode($_POST['path']));

$file_name = $uploaddir . "/" . str_replace("'","",$file_name);
$copy = copy($_FILES['uploadFile']['tmp_name'],$file_name);
// check if successfully copied
if( ! $copy)
{
echo basename($file_name) . " | Impossible d'uploader !
";
}
}
}
?>


<html>
<head>
<title>
Explorateur de fichier
</title>
</head>


<table width =100%>
----,

\">Retour au répertoire racine |
\">Créer un nouveau répertoire |
\">Uploader un fichier

</td>





<?php
if ( $affiche_creer_formulaire )
{
// affichage du formulaire pour creer un repertoire
?>

<hr>

<form method="get">
" />

Nom du repertoire :

</form>

<hr>

<?php
}
if ( $affiche_supprimer_formulaire )
{
// affichage du formulaire pour supprimer un repertoire
?>

<hr>

<form method="get">
" />
<?
if ( isset($_GET['file']) )
echo "";
?>
Supprimer <? echo $currentdir ; if (isset($_GET['file'])) echo $_GET['file']; ?> ?


</form>

<hr>

<?php
}
if ( $affiche_upload_formulaire )
{
?>

<hr>

<form enctype="multipart/form-data" method="post">
Fichier :

">

Dater le fichier
</form>

<hr>

<?php
}
?>

</td>
</tr>
<tr>
<td valign=top width=20%>

Répertoires



<hr>

<?php
$directory = opendir( $rootdir . \"/\" . $currentdir );
while( $dir = readdir($directory) )
{
if (is_dir( $rootdir . \"/\" . $currentdir . \"/\" . $dir) && $dir != \".\" )
{
// on affiche pas le .. quand on est a la racine
if( $currentdir == \"\" && $dir != \"..\" || $currentdir != \"\")
{
echo \"----
";
echo "";
echo ", ";
echo "" . $dir . "";

echo ", <td align=right>\";

if ( $dir != \"..\" )
{
echo \"

\";
}

echo \"\n\";
}
}
}
closedir($directory);
?>

</td>
<td valign=top width=80%>

Extensions
,

Noms des fichiers
,

Taille en octects
,

<!---->



<hr>

<?php
$directory = opendir( $rootdir . \"/\" . $currentdir );
$foundone = false;
while( $file = readdir($directory) )
{
if (is_file($rootdir . \"/\" . $currentdir . \"/\" . $file) )
{
$foundone = true;
echo \"----
";

// selon l'extension du fichier
$ext = strtolower(substr($file,strrpos($file,".") + 1,strlen($file) - strrpos($file,".")));
switch($ext)
{
case "gif":
case "jpg":
case "png":
case "jpeg":
case "bmp":
echo strtoupper($ext);
break;

default:
echo strtoupper($ext);
break;
}

echo ", ";
echo "" . $file . "";
echo ", ";
echo filesize($rootdir . "/" . $currentdir . "/" . $file );

echo ", ";
echo "";

echo ", \n\";
}
}
closedir($directory);

if ( ! $foundone)
{
echo \"----
Attention : Aucun fichier dans ce repertoire !, \";
}

?>

</td>
</tr>
</table>

</html>

Merci pour aide très précieuse !...
Utilisateur anonyme
22 sept. 2005 à 18:51
Envoyezmoimail :

moi aussi au départ ça ne fonctionnait pas la fonction supprimer, mais voici les changements que j'ai apportés :

voici le bon code qui fonctionne peu importe le nombre de sous-dossiers et de fichiers :

à placer dans le haut de la page dans la balise php :

function advRmDir($dir)
{


if( !preg_match( "/^.*\/$/", $dir ) ) $dir .= '/';

// Ouverture du repertoire demande
$handle = @opendir( $dir );

// si pas d'erreur d'ouverture du dossier on lance le scan
if( $handle != false )
{

// Parcours du repertoire
while( $item = readdir($handle) )
{
if($item != "." && $item != "..")
{
if( is_dir( $dir.$item ) )
advRmDir( $dir.$item );
else unlink( $dir.$item );
}
}

// Fermeture du repertoire
closedir($handle);

// suppression du repertoire
$res = rmdir( $dir );

}
}







Remplacer la ligne unlink ou system("rm"....) par

if(! is_dir($rootdir . "/" . $rm)){
unlink($rootdir . "/" . $rm) ;
}
else{
advRmDir($rootdir . "/" . $rm);
}


si t'a besoin d'aide, n'hésite pas... c'est akatopaz qui a fait le code à la base (suppression qui fonctionne pas), mais comme il n'a pas l'air très intéressé à aider les autres...
cs_envoyezmoimail Messages postés 4 Date d'inscription lundi 15 décembre 2003 Statut Membre Dernière intervention 22 septembre 2005
22 sept. 2005 à 10:15
bonjour à tous !

merci à l'auteur pour cette source super pratique ... même si la supression de fonctionne pas bien :-(

je suis sur un projet et j'aimerais pouvoir supprimer les dossiers ? Est ce que quelqu'un à une idée ???

je sais que c'est la fonction rmdir() mais je ne sais pas comment l'adapter au code (qui marche bien) de Emmash !

Merci à tous de votre prochaine aide !...
bebel3 Messages postés 6 Date d'inscription dimanche 5 juin 2005 Statut Membre Dernière intervention 20 août 2005
20 août 2005 à 23:47
mmh j'ai essayé ta solution mais ca ne fonctionne pas chez moi

je regarde ca de plus près mais en tout cas merci
Utilisateur anonyme
10 août 2005 à 19:57
Oups... je recommence... voici le bon code qui fonctionne peu importe le nombre de sous-dossiers et de fichiers :

à placer dans le haut de la page dans la balise php :

function advRmDir($dir)
{


if( !preg_match( "/^.*\/$/", $dir ) ) $dir .= '/';

// Ouverture du repertoire demande
$handle = @opendir( $dir );

// si pas d'erreur d'ouverture du dossier on lance le scan
if( $handle != false )
{

// Parcours du repertoire
while( $item = readdir($handle) )
{
if($item != "." && $item != "..")
{
if( is_dir( $dir.$item ) )
advRmDir( $dir.$item );
else unlink( $dir.$item );
}
}

// Fermeture du repertoire
closedir($handle);

// suppression du repertoire
$res = rmdir( $dir );

}
}







Remplacer la ligne unlink ou system("rm"....) par

if(! is_dir($rootdir . "/" . $rm)){
unlink($rootdir . "/" . $rm) ;
}
else{
advRmDir($rootdir . "/" . $rm);
}


Bon ça devrait tout fonctionner!!
Utilisateur anonyme
10 août 2005 à 19:40
Allo!!

j'ai essayé avec ta ligne de code unlink, mais j'ai remarqué que ça ne fonctionnait que sur des fichiers...

j'ai fais des tests de mon côté et j'ai remplacé ta ligne de code par une alternative qui vérifie si ce qui est à supprimer est un dossier ou un fichier... si c'est un fichier, la ligne de code unlink sera utilisé sinon on utilisera une boucle qui supprime tout le contenu du dossier à supprimer et ensuite supprime le dossier...

voilà c'est tout!!

J'espère que ça pourra t'aider!!

Merci pour ton aide ;)

Voici le code qui remplace ta ligne de code unlink :

if(! is_dir($rootdir . "/" . $rm)){
unlink($rootdir . "/" . $rm) ;
}
else{

// suppression avancee d'un repertoire
//
// DESCRIPTION
// > permet de supprimer un dossier meme s'il n'est pas vide. Le script explore tout le contenu et le supprime
// > avant de supprimer le dossier.
//
// >> Parametres d'entree :
// > $dir : STRING / chemin d'acces au dossier a supprimer
//
// >> Parametre de sortie : BOOLEEN / TRUE si dossier supprime, FALSE en cas d'erreur

// ajout du slash a la fin du chemin s'il n'y est pas

$dir = $rootdir . "/" . $rm;
if( !preg_match( "/^.*\/$/", $dir ) ) $dir .= '/';

// Ouverture du repertoire demande
$handle = @opendir( $dir );

// si pas d'erreur d'ouverture du dossier on lance le scan
if( $handle != false )
{

// Parcours du repertoire
while( $item = readdir($handle) )
{
if($item != "." && $item != "..")
{
if( is_dir( $dir.$item ) )
advRmDir( $dir.$item );
else unlink( $dir.$item );
}
}

// Fermeture du repertoire
closedir($handle);

// suppression du repertoire
$res = rmdir( $dir );

}
}
bebel3 Messages postés 6 Date d'inscription dimanche 5 juin 2005 Statut Membre Dernière intervention 20 août 2005
9 août 2005 à 22:36
debut de réponse

a la place de
system("rm -r '". $rootdir . "/" . $rm . "'") ;

mettre
unlink($rootdir . "/" . $rm) ;
bebel3 Messages postés 6 Date d'inscription dimanche 5 juin 2005 Statut Membre Dernière intervention 20 août 2005
9 août 2005 à 19:25
depuis hier, je regarde le code, essaye quelques trucs, mais ca fonctionne toujours pas, et comme je suis pas un pro du php...

ptet que si quelqu'un passe par là on aura un début de solution

merci d'avance
Utilisateur anonyme
9 août 2005 à 18:16
Bonjour,

en faisant d'autres tests j'ai remarqué, moi aussi, que la suppression en fonctionnait pas... j'attend toujours une réponse de la part de l'auteur...!!
bebel3 Messages postés 6 Date d'inscription dimanche 5 juin 2005 Statut Membre Dernière intervention 20 août 2005
9 août 2005 à 00:25
bon code c'est ce que je recherchais

sinon chez moi la fonction pour supprimer un dossier ou un fichier ne fonctionne pas...

quelqu'un à une solution ? peut-être n'ai-je pas les droits suffisant ?
Utilisateur anonyme
4 août 2005 à 21:15
Bravo parce que sérieux c'est super ce que t'a réussi à programmer! J'avais justement besoin d'un petit ftp en php en ligne! J'ai seulement eu à entrer le nom de mon dossier racine et le nom de mon dossier images et tout marche super bien! Je suis vraiment très épatée ;)

Bon travail et continue comme ça!
Rejoignez-nous