我需要删除一个文件。到目前为止,我最终删除了所有文件。
如何删除单个文件?
<?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();
?>
答案 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来删除他们喜欢的任何内容,但它可以达到你想要的目的。
如果有些事情不够清楚,请告诉我。