Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    60

    Eliminare file caricato su directory

    Ciao a tutti ho creato questo script:

    Codice PHP:
    <?php 
    $directory 
    "dir/" ;

    function 
    dir_list($directory FALSE) { 
      
    $dirs= array(); 
      
    $files = array(); 
      if (
    $handle opendir("./" $directory)) { 
        while (
    $file readdir($handle)) { 
          if (
    is_dir("./{$directory}/{$file}")) { 
            if (
    $file != "." $file != ".."$dirs[] = $file
          } else { 
            if (
    $file != "." $file != ".."$files[] = $file
         } 
      } 

    closedir($handle); 
    reset($dirs); 
    sort($dirs); 
    reset($dirs); 
    reset($files); 
    sort($files); 
    reset($files); 
    echo 
    "\n

    "

    while(list(
    $key$value) = each($files)) { 
    // qui puoi fare l'operazione su "$directory.$value", p.es.: 

      
    echo " <table border='0' cellpadding='0' id='tab_file'> <tr> <td width='50'>[img]../img/file.png[/img]</td> <td><a href=\"{$directory}{$value}\">{$value}</a> | [url='elimina.php']Elimina[/url] </td> </tr></table>\n"; } echo "</p>\n"; } dir_list("/dir/"); 
    ?>
    come potete vedere nella tabella (contenente il file) che viene creata dallo script ho inserito un link a elimina.php che viene visualizzato accanto al nome di ogni file presente nella directory.
    elimina.php dovrebbe cancellare il file corrispondente senza eliminre gli altri.

    codice:
    <table border='0' cellpadding='0' id='tab_file'> 
    <tr> 
    <td width='50'>
    [img]../img/file.png[/img]</td> 
    <td><a href=\"{$directory}{$value}\">{$value}</a> | Elimina 
    </td> 
    </tr>
    </table>
    Come si scrive la funzione di elimina.php?

    Se non mi sono spiegato chiedete pure chiarimenti.
    Grazie in anticipo per le risposte!

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    puoi cambiare la visualizzazione così:

    <a href=\"{$directory}{$value}\">{$value}</a> | Elimina

    e in elimina.php:
    Codice PHP:
    $file $_GET['file'];
    unlink($file); // VEDI NOTA!!!!!!!!!!!!!!!!!!!!!!!! 
    NOTA!!!!!!!!!!!!!!!!!!!!!!!!
    dovresti:
    - urlencodare il nome del file prima di passarlo come parametro
    - NON fare questa cosa!!!!!!!!!! perchè uno può passare qualunque cosa nell'url e - se non hai i permessi ben settati - cancellarti qualunque cosa sul server... sarebbe meglio attribuire dei codici ai file e passare quello come riferimento e non il nome

  3. #3
    Originariamente inviato da eiyen
    puoi cambiare la visualizzazione così:

    <a href=\"{$directory}{$value}\">{$value}</a> | Elimina

    e in elimina.php:
    Codice PHP:
    $file $_GET['file'];
    unlink($file); // VEDI NOTA!!!!!!!!!!!!!!!!!!!!!!!! 
    NOTA!!!!!!!!!!!!!!!!!!!!!!!!
    dovresti:
    - urlencodare il nome del file prima di passarlo come parametro
    - NON fare questa cosa!!!!!!!!!! perchè uno può passare qualunque cosa nell'url e - se non hai i permessi ben settati - cancellarti qualunque cosa sul server... sarebbe meglio attribuire dei codici ai file e passare quello come riferimento e non il nome
    Soluzione (tenuto conto delle note) corretta, sebbene basti controllare che il file passato in get esista nella directory che vogliamo e fare un poco di pulizia del valore get.
    Una prima bozza potrebbe essere così

    Codice PHP:
    $folder_img "/percorso/relativo/cartella/da/cui/cancellare/";
    $file parse_clean_value(trim($_GET['file']));
    if (
    file_exists("{$_SERVER['DOCUMENT_ROOT']}{$folder_img}{$file}") {
            
    unlink("{$_SERVER['DOCUMENT_ROOT']}{$folder_img}{$file}");
    }

    function 
    parse_clean_value($val){
            if (
    $val == ""){
                return 
    "";
            }

            
    $val str_replace" "" "$val );
            
    $val str_replacechr(0xCA), ""$val );
            
    $val str_replace"&"            "&amp;"         $val );
            
    $val str_replace"<!--"         "<!--"  $val );
            
    $val str_replace"-->"          "-->"       $val );
            
    $val preg_replace"/<script/i"  "<script"   $val );
            
    $val str_replace">"            "&gt;"          $val );
            
    $val str_replace"<"            "&lt;"          $val );
            
    $val str_replace"\""           "&quot;"        $val );
            
    $val preg_replace"/\n/"        "
    "        
    $val );
            
    $val preg_replace"/\\\$/"      "$"        $val );
            
    $val preg_replace"/\r/"        ""              $val );
            
    $val str_replace"!"            "!"         $val );
            
    $val str_replace"'"            "'"         $val );

            
    $val stripslashes($val);
            
    $val preg_replace"/\\\(?!&amp;#|\?#)/""\"$val );
            return 
    $val;
        } 

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    vedi bene che non siano permessi "percorsi" di risalita, soprattutto... se funziona per te allora va bene

  5. #5
    Originariamente inviato da eiyen
    vedi bene che non siano permessi "percorsi" di risalita, soprattutto... se funziona per te allora va bene
    Giusto...mancherebbe almeno un
    Codice PHP:
    $val str_replace".."            ""         $val ); 

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    60
    Ciao,
    prima di tutto grazie per l'aiuto!

    Secondo, mi da un errore sulla parte:

    Codice PHP:
    if (file_exists("{$_SERVER['DOCUMENT_ROOT']}{$folder_img}{$file}") { 
            
    unlink("{$_SERVER['DOCUMENT_ROOT']}{$folder_img}{$file}"); 


    function 
    parse_clean_value($val){ 
            if (
    $val == ""){ 
                return 
    ""
            } 
    Il messaggio è questo:
    Parse error: syntax error, unexpected '{' in elimina.php on line 13
    Da quello che ho capito si riferisce all'ultima "{" della prima riga ma non so come risolvere questo errore.

  7. #7
    Originariamente inviato da matmaz
    Ciao,
    prima di tutto grazie per l'aiuto!

    Secondo, mi da un errore sulla parte:

    Codice PHP:
    if (file_exists("{$_SERVER['DOCUMENT_ROOT']}{$folder_img}{$file}") { 
            
    unlink("{$_SERVER['DOCUMENT_ROOT']}{$folder_img}{$file}"); 


    function 
    parse_clean_value($val){ 
            if (
    $val == ""){ 
                return 
    ""
            } 
    Il messaggio è questo:


    Da quello che ho capito si riferisce all'ultima "{" della prima riga ma non so come risolvere questo errore.
    Sì manca una tonda, ho scritto di fretta

    Codice PHP:
    if (file_exists("{$_SERVER['DOCUMENT_ROOT']}{$folder_img}{$file}")) { 
            
    unlink("{$_SERVER['DOCUMENT_ROOT']}{$folder_img}{$file}"); 


  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    60
    Grazie!

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    60
    Originariamente inviato da Dascos
    Sì manca una tonda, ho scritto di fretta

    Codice PHP:
    if (file_exists("{$_SERVER['DOCUMENT_ROOT']}{$folder_img}{$file}")) { 
            
    unlink("{$_SERVER['DOCUMENT_ROOT']}{$folder_img}{$file}"); 

    Scusa ancora adesso mi dice:

    Warning: preg_replace() [function.preg-replace]: Compilation failed: nothing to repeat at offset 7 in elimina.php on line 39
    la linea è

    Codice PHP:
    $val preg_replace"/\(?!&#|?#)/""\"$val ); 

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.