2016-04-17 12 views
-1

ich diesen Code verwenden, um eine Liste der Dateien im Benutzerprofilseite zeigen:Löschen einer Datei mit 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; 
} 

Wie kann ich, wenn der Benutzer auf geklickt X die Datei gelöscht werden?

Jede Meinung wird geschätzt.

+1

Sie werden den Dateinamen an ein Skript schreiben müssen, die Sie Dateien mit –

Antwort

2

Das hängt ein wenig von Ihrer Struktur ab, aber der einfachste Weg ist, den Dateinamen an ein neues Skript zu senden, zum Beispiel deletefile.php in dieser Datei überprüfen Sie zuerst, ob Sie eingeloggt sind. Dann können Sie überprüfen, ob die Datei existiert und eineerstellenfür diese Datei.

if(is_file($pathtofile."/".$filename)) { 
    unlink($pathtofile."/".$filename); 
} 

Seien Sie geduldig, dass Sie die Eingabedatei überprüfen, die Sie nicht über eine Sicherheitslücke in der Anwendung haben. Um einige Probleme zu vermeiden, sollten Sie den vollständigen Pfad zur Datei verwenden.

+2

Aus Sicherheitsgründen löschen können Sie auch sicher, dass die Datei machen überprüfen möchten gelöscht werden, wurde vom Benutzer hochgeladen und gelöscht, sodass Benutzer keine anderen Benutzerdateien löschen können – Jeff

1

Sie müssen den Pfad der Datei, die Sie löschen und die Vorform mit unlink() eine PHP-Funktion definieren möchten eine PHP-Funktion onclick Preform können Sie AJAX verwenden

<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); 
    } 
1

Sie müssen zwei Dinge tun, um das Löschen einer Datei zu erreichen.

  1. Löschen Sie den Dateiverweis aus einer Datenbank (falls gespeichert).

  2. Löschen Sie die tatsächliche Datei von der Festplatte.

Beispielfunktionen für diese Aktionen:

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