我使用此代码在用户的个人资料页面中显示文件列表:
public static function getUserProfilemusic() {
$path = Xenforo_Application::getInstance()->getRootDir() . '/styles/default/dadparvar/profilemusic/songs/';
$directoryList = scanDir($path.'/'.func_get_arg(1));
unset($directoryList[0]);
unset($directoryList[1]);
$string = '';
foreach ($directoryList as &$listEntry) {
$songURL = /*$path*/ '/styles/default/dadparvar/profilemusic/songs/' . func_get_arg(1) . '/'. $listEntry;
$string .= "<a href='$songURL' class='Tooltip' title='Click to Download $listEntry'> $listEntry </a>
| <a href='#' class='Tooltip' title='Click to Remove $listEntry' target='_blank'> X </a>
<br>
";
}
return $string;
}
如何设置,当用户点击 X 时,文件会被删除?
任何意见都将不胜感激。
答案 0 :(得分:2)
这取决于您的结构,但最简单的方法是将文件名发送到新文件中,例如deletefile.php
,在该文件中首先检查您是否已登录。然后您可以检查文件存在并在该文件上创建unlink
。
if(is_file($pathtofile."/".$filename)) {
unlink($pathtofile."/".$filename);
}
请耐心等待您检查应用程序中没有安全漏洞的输入文件名。要防止出现某些问题,您应该使用文件的完整路径。
答案 1 :(得分:1)
您需要定义要删除的文件的路径,并使用unlink()执行PHP函数以执行PHP函数onclick,您可以使用AJAX
<a href='myAjax()' class='Tooltip' title='Click to Remove $listEntry' target='_blank'>
function myAjax() {
$.ajax({
type: "POST",
url: 'ajax.php',
data:{action:'call_this'},
success:function(html) {
alert(html);
}
});
}
ajax.php
if($_POST['action'] == 'call_this') {
$listEntry = 'file_path'
unlink($listEntry);
}
答案 2 :(得分:1)
您需要做两件事才能删除文件。
从数据库中删除文件引用(如果已存储)。
从磁盘中删除实际文件。
这些操作的示例函数:
<?php
public function deleteFromDb() {
global $database;
$sql = "DELETE FROM <$table_name> WHERE id = <ID> LIMIT 1";
$database->query($sql);
return ($database->affected_rows() == 1) ? true : false;
}
public function destroyFile() {
// Remove the database entry
if($this->deleteFromDb()) {
// Remove the file
$target_path = <PATH_TO_FILE_TO_DELETE>;
return unlink($target_path) ? true : false;
} else {
// Failed to delete from db
return false;
}
}
?>