使用php删除文件

时间:2016-04-17 20:43:09

标签: php

我使用此代码在用户的个人资料页面中显示文件列表:

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 时,文件会被删除?

任何意见都将不胜感激。

3 个答案:

答案 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)

您需要做两件事才能删除文件。

  1. 从数据库中删除文件引用(如果已存储)。

  2. 从磁盘中删除实际文件。

  3. 这些操作的示例函数:

        <?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;
                }
            }
        ?>