删除PHP中的单个文件

删除PHP中的单个文件,php,Php,我需要删除一个文件。根据我目前的情况,我最终删除了所有文件 如何删除单个文件 <?php function delete($descarga){ $link = $descarga; unlink($link); } $path="ficheros/"; $directorio=dir($path); while ($archivo = $directorio->read()) { if($archivo === '.' || $archivo === '

我需要删除一个文件。根据我目前的情况,我最终删除了所有文件

如何删除单个文件

<?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();
?>

起初不清楚,但我知道您提供的代码有什么问题

首先,从目录中获取所有文件。 然后尝试创建指向非文件夹文件的删除链接。 但问题是,每次创建链接时,都在代码中调用
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();
?>
/display_files.php
另一个作为参数接收要删除的文件,如下所示(尚未对其进行测试,但应接近您所需):

/path/to/delete/file.php
当然,这种方法无论如何都是不安全的,因为你允许任何人调用URL来删除他们喜欢的任何内容,但它满足了你的需要


如果有些地方不够清楚,请告诉我。

起初不清楚,但我知道您提供的代码有什么问题

首先,从目录中获取所有文件。 然后尝试创建指向非文件夹文件的删除链接。 但问题是,每次创建链接时,都在代码中调用
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();
?>
/display_files.php
另一个作为参数接收要删除的文件,如下所示(尚未对其进行测试,但应接近您所需):

/path/to/delete/file.php
当然,这种方法无论如何都是不安全的,因为你允许任何人调用URL来删除他们喜欢的任何内容,但它满足了你的需要


如果有不清楚的地方,请告诉我。

您的问题与您发布的代码完全不清楚。请说得更清楚些。我想用UNLINK@MuntashirAkonI方法从图标中删除一个文件。我认为glyphicon与您的问题无关,所以我会从问题描述中编辑它。还有,据我所知,当你试图删除一个文件时,所有的文件都会被删除,是吗?是的,是的。你能帮我吗@Cavpollo您的问题与您发布的代码完全不清楚。请说得更清楚些。我想用UNLINK@MuntashirAkonI方法从图标中删除一个文件。我认为glyphicon与您的问题无关,所以我会从问题描述中编辑它。还有,据我所知,当你试图删除一个文件时,所有的文件都会被删除,是吗?是的,是的。你能帮我吗@卡夫波洛