Upload/Download - link usuwający plik

0

Witam, mam taki oto kod, czy byłby ktoś w stanie podpowiedzieć jak zrobić hyperlink(po kliknięciu w niego) usunie plik z serwera, który uploaduje (robię to na razie w xampp'ie)? - niżej kod.


<?php
$IsPostFormData = (isset($_POST["sent"]) && ($_POST["sent"]=="y"));
$IsGetFormData = (isset($_GET["sent"]) && ($_GET["sent"]=="y"));
$UploadDir="C:/xampp/htdocs/UPLOAD".date(" d-m-Y H.i.s")."/";
$UploadCodes = array( "UPLOAD_ERR_OK", "UPLOAD_ERR_INI_SIZE", "UPLOAD_ERR_FORM_SIZE", "UPLOAD_ERR_PARTIAL", "UPLOAD_ERR_NO_FILE" );
$MaxFileSize=100000;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Wysyłanie plików przez formularz</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
td,th,body { font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10pt; }
</style>
</head>

<body>

<div align="center">

<h3>Wysyłanie plików przez formularz</h3>

<?php
  if ( $IsPostFormData )
  {
    mkdir( $UploadDir );
 ?>
 <table cellpadding="4" cellspacing="2" border="1" rules="groups">
 
 <?php
 
    for( $i=0; $i<count( $_FILES["pliki"]["name"] ); $i++ )
    {
      $UploadFile = $UploadDir.$_FILES['pliki']['name'][$i];
      echo "<tbody>";
      echo "<tr>";
	  
		if ( move_uploaded_file( $_FILES['pliki']['tmp_name'][$i], $UploadFile ) )
      {
			echo "<td colspan=\"2\" style=\"color:orange\">Plik został poprawnie uploadowany i skopiowany w nowe miejsce<br>$UploadFile</td></tr>";
      }
		else
      {
			echo "<td colspan=\"2\" style=\"color:red\">Błąd przy uploadowaniu</td>";
      }
      echo "</tr>";
      echo "<tr><td style=\"color: navy; text-align: left\">Nazwa wysłanego pliku (po stronie klienta):</td><td>".$_FILES["pliki"]["name"][$i]."</td></tr>\n";
      echo "<tr><td style=\"color: navy; text-align: left\">Typ zawartości wysłanego pliku:</td><td>".$_FILES["pliki"]["type"][$i]."</td></tr>\n";
      echo "<tr><td style=\"color: navy; text-align: left\">Rozmiar wysłanego pliku:</td><td>".$_FILES["pliki"]["size"][$i]."</td></tr>\n";
      echo "<tr><td style=\"color: navy; text-align: left\">Nazwa pliku na serwerze:</td><td>".$_FILES["pliki"]["tmp_name"][$i]."</td></tr>\n";
      echo "<tr><td style=\"color: navy; text-align: left\">Kod błędu związany z wysłaniem pliku:</td><td>".$UploadCodes[$_FILES["pliki"]["error"][$i]].":".$_FILES["pliki"]["error"][$i]."</td></tr>\n";
      echo "</tbody>";
    }
	
	
	
	$dir = "C:/xampp/htdocs/UPLOAD".date(" d-m-Y H.i.s")."/";
	
function LinkDownload($dir)
{
  $fd = opendir($dir);
	if(!$fd) return false;
		while (($file = readdir($fd)) !== false){
			if($file != "." && $file != ".."){
			
	  echo 'Link do pliku:'."<br />";
      echo("<a href=\"http://127.0.0.1/UPLOAD".date(" d-m-Y H.i.s")."/");
      echo("$file\">$file</a>"."<br/><br/>");	
    }
  }
  closedir($fd);
}

	LinkDownload($dir);

?>
</table>
<?php
  }
?>

 

<form action="upload1.php" method="post" enctype="multipart/form-data" name="plik">
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $MaxFileSize;?>">
<table cellpadding="2" cellspacing="0" border="0" bgcolor="#00FF00">
<tr><td>Plik 1:</td><td><input type="file" name="pliki[]" size="40"></td></tr>
<tr><td>Plik 2:</td><td><input type="file" name="pliki[]" size="40"></td></tr>
<tr><td>Plik 3:</td><td><input type="file" name="pliki[]" size="40"></td></tr>
<tr><td colspan="2"><input type="submit" name="Submit" value="Wyślij"></td></tr>
</table>
<input type="hidden" name="sent" value="y">
</form>

</div>
<hr>

</body>
</html>

 
0

Tu masz funkcję która usuwa katalog z całą zawartością dostosuj do swoich potrzeb

 
		 function delete_dir($dirname)
		 {

		    if(!file_exists($dirname))
		        return false;

		    if (is_dir($dirname))
		         $dir_handle = opendir($dirname);

		    if (!$dir_handle)
		         return false;

		    while($file = readdir($dir_handle))
		    {

		        if ($file != '.' && $file != '..')
			{

		            if (!is_dir($dirname."/".$file))
		                unlink($dirname."/".$file);
		            else
		                delete_dir($dirname.'/'.$file);
		        }

		    }
		    closedir($dir_handle);

		    rmdir($dirname);

		    return true;

       }
1

Do tego aż się prosi baza danych.
Skrypt masz dziurawy jak polskie drogi.
Zrób sobie jakieś usun.php, do którego będziesz podawał ścieżkę do pliku w zmiennej get i hash.
Czyli tak, ostateczna ścieżka jest powiedzmy:
/upload/2012-02-02/jakisplik.zip
Hash licz sobie na podstawie pelnej sciezki + jakaś sól, przy użyciu np. md5.
Teraz, Twoje usun.php niech pobiera ścieżkę z GET + hash (również z GET), jeżeli ścieżka pasuje do hasha - to plik usuwasz.

Bez soli zrobisz kolejną dziurę (choć gorszych niż już są się nie da)!

0

Dzięki bardzo!

1 użytkowników online, w tym zalogowanych: 0, gości: 1