在PHP中删除单个文件

时间:2016-06-21 20:04:02

标签: php

我需要删除一个文件。到目前为止,我最终删除了所有文件。

如何删除单个文件?

<?php
function delete($descarga){
    $link = $descarga;
    unlink($link);
}

$path="ficheros/"; 
$directorio=dir($path);
while ($archivo = $directorio->read())
{
    if($archivo === '.' || $archivo === '..') {continue;}
    $descarga = $path."".$archivo;
    echo "<a href=".$descarga.">".$archivo."</a>"."<a title='Delete' href='#' onclick=".delete($descarga)."><span class='glyphicon glyphicon-remove'></span></a>"."<br>";
}   

$directorio->close();
?>

1 个答案:

答案 0 :(得分:2)

一开始并不清楚,但我看到你提供的代码有什么不对。

首先,您从目录中获取所有文件。 然后,您尝试创建不属于文件夹的文件的删除链接。 但事情就是这样,每次创建链接时,都会在代码中调用delete()。因此,每次执行此代码时,即使链接显示在页面上,也会立即删除所有文件。只是尝试加载页面,不要点击任何内容,你会看到。

因此,问题在于您将服务器端代码与客户端代码混淆/混合。呈现页面后,您无法访问您编写的PHP代码。所以这意味着你无法从onclick Javascript事件访问你的delete函数,因为PHP是服务器端代码而Javascript是客户端代码。

您需要的是2个PHP文件。一个显示文件及其删除按钮,如下所示:

/display_files.php
<?php
   $path="ficheros/"; 
   $directorio=dir($path);
   while ($archivo = $directorio->read())
   {
      if($archivo === '.' || $archivo === '..') {continue;}
      $descarga = $path."".$archivo;
      echo "<a href=\"".$descarga."\">".$archivo."</a>"."<a title=\"Delete\" href=\"/path/to/delete/file.php?borrar_archivo=".$descarga."\"><span class=\"glyphicon glyphicon-remove\"></span></a><br>";
   }  

   $directorio->close();
?>

另一个接收要删除的文件作为参数,就像这样(避免测试它,但应该接近你需要的):

/path/to/delete/file.php
<?php
   $link = $_GET["borrar_archivo"];
   unlink($link);
?>

当然,这种方法无论如何都不安全,因为你让任何人调用URL来删除他们喜欢的任何内容,但它可以达到你想要的目的。

如果有些事情不够清楚,请告诉我。