Supprimer fichier d'un répertoire en PHP

Résolu/Fermé
tomy2904 Messages postés 324 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 20 avril 2013 - 25 avril 2012 à 20:40
tomy2904 Messages postés 324 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 20 avril 2013 - 26 avril 2012 à 19:01
Bonjour,

voilà j'aimerai supprimer un élément d'un répertoire en php mais je n'y arrive pas, il supprime TOUT le contenu de mon répertoire.
J'explique le fonctionnement de mon site : lorsqu'un utilisateur se connecte, il possède un répertoire personnel portant son nom de login ($login) avec ses fichiers personnel ($file) et lorsque je clique sur un lien "supprimer" j'aimerais supprimer le fichier correspondant.
J'ai fait quelque recherche et voilà ce que j'ai effectué pour l'instant :
Code afin de lister l'ensemble des fichiers propre à l'utilisateur

<?php
$login = $_SESSION['login'];
// ouvre le rep
$rep_ouvert = opendir($login);
echo "<h2 align=center>Voici vos fichiers personnels :</h3>";

$i=0;
while ( $file = readdir($rep_ouvert) )
{
// enleve les fichiers . et ..
if ($file != '.' && $file != '..')
{
// on passe les datas dans un tableau
$ListFiles[$i]=$file;
echo "<h5 align=center><a href=\"./$login/$file\">".$file."</a></h5>";
echo "<a href=\"supprimer.php\">Supprimer</a> ";
$i++;
}


}
closedir($rep_ouvert);

?>

Code dans supprimer.php :
<?php
session_start();
if (!isset($_SESSION['login'])) {
header ('Location: connexion.php');
exit();
}
$login = $_SESSION['login'];

$repertoire = opendir($login); // On définit le répertoire dans lequel on souhaite travailler.

while (false !== ($file = readdir($repertoire))) // On lit chaque file du répertoire dans la boucle.
{
$chemin = $login."/".$file; // On définit le chemin du file à effacer.

// Si le file n'est pas un répertoire...
if ($file != ".." AND $file != "." AND !is_dir($file))
{
unlink($chemin); // On efface.
}
}
closedir($repertoire);
?>

Merci pour votre aide!!

1 réponse

Bonjour

Tel qu'est fait ton script de suppression, avec son while, il efface tout... Très dangereux !
Tu as fait ça parce que tu ne savais pas quoi effacer.
Et tu ne sais pas quoi effacer parce que rien, dans le lien que tu crées, ne dit quel fichier il faut effacer.
echo "<a href=\"supprimer.php\">Supprimer</a> "; 

Ce lien est le même pour tous les fichiers de la liste. Il n'y a rien qui indique quel est le fichier à effacer.
Il faut ajouter le nom du fichier pour le retrouver ensuite lors de l'effacement :
echo '<a href="supprimer.php?fichier="',urlencode($file),'">Supprimer</a> '; 

Et dans ton traitement de suppression
if (isset($_GET['fichier'],$_SESSION['login'])) {
  $fichier=$_SESSION['login'].'/'.$_GET['fichier'];
  if (is_file($fichier)) unlink($fichier);
}
0
tomy2904 Messages postés 324 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 20 avril 2013 29
26 avril 2012 à 19:01
Merci pour la réponse! J'ai fait des recherches hier et désormais cela fonctionne. Le code que j'ai trouvé ressemble énormément à celui ci-dessus donc merci quand même, ça m'aurait aidé
0