Suppression d'un serveur de fichier
Je suis à la recherche d'un moyen de supprimer un fichier à partir du serveur à l'aide de PHP. Fondamentalement, j'ai mes fichiers figurant sur une page de cette manière:
<ul>
<li><a href="delete_file.php?file=uploads/file_01.jpg">Delete File 01</a></li>
<li><a href="delete_file.php?file=uploads/file_02.jpg">Delete File 02</a></li>
<li><a href="delete_file.php?file=uploads/file_03.jpg">Delete File 03</a></li>
</ul>
Le problème est que je ne suis pas sûr de savoir comment obtenir mon delete_file.php fichier de travail. Je crois qu'il doit être quelque chose comme ceci:
<?php
$path="uploads/file_01.jpg";
if(unlink($path)) echo "File Deleted";
?>
...mais je ne suis pas sûr de la façon d'obtenir le $path pour modifier le fichier, je clique sur supprimer.
vous souhaitez $_GET['fichier'], et c'est fou comme j'ai pu ajouter un fichier à l'url ande de le supprimer.
Que faire si quelqu'un passe
Que faire si quelqu'un passe
delete_file.php?file=delete_file.php
?OriginalL'auteur | 2011-02-10
Vous devez vous connecter pour publier un commentaire.
alors que vous devez être extrêmement prudent avec les donner à un utilisateur la possibilité de supprimer des fichiers, je vais vous donner assez de corde pour se pendre
définir un répertoire de base qui contiendra tous les fichiers qui seront supprimés
Puis supprimez le fichier
Merci pour cela. Travaillé un régal. Tu veux dire interdire l'exploration de répertoire?
que faire si quelqu'un passe à cette adresse:
/delete_file.php?file=../../etc/passwd
non, jnpcl moyens de ne pas permettre à quelqu'un de poster
file=../../etc/apache2/apach2.conf
qui, étant donné les autorisations de droite, supprimez le fichier de configuration du serveur web de partie de votre serveurgotcha. Ne devrait pas être un problème tant que le script ne peut pas être exécuté à moins que vous êtes connecté en tant qu'administrateur (moi).
OriginalL'auteur Patrick
Je ne vais pas mentir, je ne sais pas une meilleure façon de désinfecter le $_GET['fichier'] autre que pour vérifier si c'est un fichier. Si ce n'est pas un chemin valide, les experts s'il vous plaît carillon. (Peut-être de suivre les lignes directrices présenter dans ce sujet?)
Nettoyer avec de
basename()
pour garder la personne d'entrer dans quelque chose comme../../someotherfile
.une autre petite prbolem, vous avez oublié
)
avant la;
sur la ligne où estecho
, mais tout ce qui est beauOriginalL'auteur Brad Christie
Parfois, vous souhaiterez peut-être créer le chemin d'accès de façon dynamique.
Par exemple, je suis en utilisant un CMS à différents endroits donc je devrais pas utiliser les définitions.
Mon projet structure:
-myProject
|admin
|--app
|---contrôleurs
|-télécharger
C'est prendre le chemin de l'exécution de fichier php.
Mon fichier php dans
'admin/app/controllers/'
Mais télécharger fichier dans
'upload/'
Nous avons besoin de supprimer des répertoires du chemin d'accès correct. Le fichier dans le dossier de téléchargement, donc nous n'avons pas besoin de " admin/app/controllers/' est inutile. Nous sommes donc en retrait de cette partie.
Maintenant, nous avons bon chemin et nous pouvons supprimer le fichier.
OriginalL'auteur Tolga