//suppression d'un répertoire?>
<form method="post" action="directory.php">
<fieldset>
<legend>Supprimer un répertoire</legend>
<p><label for="dirname_delete">Nom du répertoire à supprimer : </label><input type="text" name="dirname_delete" /></p>
<p><input type="submit" name="valider" value="Supprimer le répertoire" /></p>
</fieldset>
</form>
<?
if(isset($_POST['dirname_delete']))
{
$dirname = $_POST['dirname_delete'];
function full_rmdir($dirname)
{
if ($dirHandle = opendir($dirname))
{
$old_cwd = getcwd();
chdir($dirname);
while ($file = readdir($dirHandle))
{
if ($file == '.' || $file == '..') continue;
if (is_dir($file))
{
if (!rmdir_rf($file)) return false;
}
else
{
if (!unlink($file)) return false;
}
}
closedir($dirHandle);
chdir($old_cwd);
if (!rmdir($dirname)) return false;
return true;
}
else
{
return false;
}
}
}
//fin de suppression d'un répertoire
mais ca ne marche pas. Peut-on alors supprimer un rep quand un utilisateur clique sur son nom plutot que de saisir dans un formulaire son nom.
$dir = opendir("./rep");
$fichier = array();
echo "Voici les répertoires contenus dans le dossier \'directory\' : <br />";
echo "<ul>";
while ($nom = readdir($dir)) {
$fichier[] = $nom;
echo "<li>".$nom."</li>";
}
echo "</ul>";
closedir($dir);
j'affiche tout ce qui se trouve dans le répertoire ou je veux que les utilisateurs créent des rep... mais ce script affiche TOUT (en vrac) et moi je voudrais qu'il fasse bien la distinction entre fichier et rep.
function full_rmdir($dirname)
{
if ($dirHandle = opendir($dirname))
{
$old_cwd = getcwd();
chdir($dirname);
while ($file = readdir($dirHandle))
{
if ($file == '.' || $file == '..')
continue;
if (is_dir($file))
{
if ( !rmdir_rf($file))
return false;
}
else
{
if (!unlink($file)) return false;
}
}
closedir($dirHandle);
chdir($old_cwd);
if (!rmdir($dirname))
return false;
return true;
}
else
{
return false;
}
}
function full_rmdir($dirname) //apel de la fonction avec comme parametre la variable dirname qui correspond au nom du rep a suppr
{
if ($dirHandle = opendir($dirname)) //on ouvre le répertoire $dirname
{
$old_cwd = getcwd(); //retourne le dossier courant (celui où on se trouve) ds la var $dirHandle
chdir($dirname); //on va dans le répertoire $dirname
while ($file = readdir($dirHandle)) //tant qu'on trouve un fichier dans le répertoire que l'on vient d'ouvrir
{
if ($file == '.' || $file == '..') //si c'est le rep curant ou le rep parent, on ne fait rien, on continue
continue;
if (is_dir($file)) //si c'est un dossier (appelé $file)) alors
{
if ( !rmdir_rf($file)) //???????
return false; //sinon on retourne false
}
else //sinon
{
if (!unlink($file)) return false; //si on a pas pu supppr le fichier a l'intérieur du repertoire, on retourne false
}
}
closedir($dirHandle); //on ferme le repertoire dans le quel on se trouve
chdir($old_cwd); //on revient au rep parent
if (!rmdir($dirname)) //si on a pa pu suppr supprimer le repertoire
return false; //on retourne false
return true;
}
else
{
return false;
}
}
if ( !rmdir_rf($file)) //???????
C'est ce qui me semblait.elseif(isset($_POST['dirname_delete']))
{
$dirname = $_POST['dirname_delete'];
function full_rmdir($dirname)
{
if ($dirHandle = opendir('./rep/'.$dirname))
{
$old_cwd = getcwd();
chdir('./rep/'.$dirname);
while ($file = readdir($dirHandle))
{
if ($file == '.' || $file == '..')
continue;
if (is_dir($file))
{
if ( !rmdir($file))
return false;
}
else
{
echo "is_dir";
if (!unlink($file)) return false;
}
}
closedir($dirHandle);
chdir($old_cwd);
if (!rmdir('./rep/'.$dirname))
return false;
return true;
}
else
{
return false;
}
}
sachant que je passe le nom du repertoire à supprimer à l'aide d'un formulaire, que ma page directory.php se trouve à la racine et que je veux que les utilisateurs puissent suppr et modif des repertoires dans un repertoire prévu à cet affet (nommé "rep") et qui est au même niveau que ma page directory.Code : Tout sélectionner
directory.php
rep
sous rep1
sous rep2...