Supprimer fichier d'un répertoire en PHP
Résolu
tomy2904
Messages postés
324
Date d'inscription
Statut
Membre
Dernière intervention
-
tomy2904 Messages postés 324 Date d'inscription Statut Membre Dernière intervention -
tomy2904 Messages postés 324 Date d'inscription Statut Membre Dernière intervention -
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!!
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!!
A voir également:
- Supprimer un fichier en php
- Supprimer rond bleu whatsapp - Guide
- Fichier bin - Guide
- Impossible de supprimer un fichier - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
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.
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 :
Et dans ton traitement de suppression
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); }
tomy2904
Messages postés
324
Date d'inscription
Statut
Membre
Dernière intervention
31
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é