Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: comando unlink

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    58

    comando unlink

    Ciao a chiunque legga questo post,
    ho creato un'area riservata che mi consente di effettuare un upload controllato(estensione, dimensione, etc) che mi salva i file in una cartella.
    Ora vorrei creare, sempre nell'area riservata, una pagina che mi consenta la gestione dei file inseriti, ossia visualizzare i nomi completi dei file con le diimensioni e affiancare ogni nome da un link "cancella file" che mi permetta di cancellare direttamente quel singolo file dal server.

    Questo è lo script che ho trovato ed adattato per leggere il contenuto della cartella:

    <?php
    $cartella = opendir("public/file_uploaded/");
    while ($file = readdir($cartella)) {
    $array_file[] =$file;
    }
    foreach ($array_file as $file) {
    if ( $file == ".." || $file == ".") {
    continue;
    }
    $dimensioni_file=filesize("public/file_uploaded/".$file);
    $dir="public/file_uploaded/".$file;
    echo "<a href=\"
    downloadit.php?nome_file=$file&dimensioni_file=$di mensioni_file&dir=$dir
    \">$file</a>credo che qui dovrei inserire ciò che mi serve per cancellare il file
    ";
    }
    ?>

    Questo script mi funziona perfettamente, dopo alcune modifiche, pertanto vorrei conservarlo ed aggiugere solo il link per cancellare il file singolo.
    Ho letto nelle guide che per cancellare un file si usa il comando "unlink()", ma come?
    Mi dareste qualche esempio e delucidazione su come si deve utilizzare e la giusta sintassi?
    Vi ringrazio anticipatamente,
    Carlo

  2. #2
    devi creare una nuova pagina in cui effettuerai la cancellazione del file, ad esempio:
    questo sarà il tuo script:
    Codice PHP:
    <?php
    $cartella 
    opendir("public/file_uploaded/");
    while (
    $file readdir($cartella)) {
    $array_file[] =$file;
    }
    foreach (
    $array_file as $file) {
    if ( 
    $file == ".." || $file == ".") {
    continue;
    }
    $dimensioni_file=filesize("public/file_uploaded/".$file);
    $dir="public/file_uploaded/".$file;
    echo 
    "<a href=\"
    downloadit.php?nome_file=
    $file&dimensioni_file=$dimensioni_file&dir=$dir
    \">
    $file</a> <a href=\"cancella.php?nome=$file\">cancella</a>";
    }
    ?>
    mentre questa sarà la pagina cancella.php
    Codice PHP:
    <?php
    $filename 
    $_GET['nome'];
    unlink($filename);
    ?>
    chiaramente sarebbe bene che tu aggiungessi qualche controllo per evitare che ti vengano cancellati file che non dovrebbero essere raggiungibili

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    58
    Dici interni a quella cartella?
    Ma in quella cartella non vi sono però file importanti, solo pdf o doc, comunque file che gli utenti possono scaricare come moduli e/o materiale.
    Se ci sono degli accorgimenti che dovrei prendere, segnalameli.
    Ti ringrazio ancora,
    Carlo

  4. #4
    Originariamente inviato da cicileu
    Dici interni a quella cartella?
    Ma in quella cartella non vi sono però file importanti, solo pdf o doc, comunque file che gli utenti possono scaricare come moduli e/o materiale.
    Se ci sono degli accorgimenti che dovrei prendere, segnalameli.
    Ti ringrazio ancora,
    Carlo
    Potresti mettere un controllo sull'estensione del file, oppure se questi file sono salvati anche su database potresti controllare che il file sia assegnato all'utente che sta per cancellarlo...

    Metti caso che un utente A utilizzando il tuo file cancella.php cancelli un file dell'utente B, non credo che questo sia contento


  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    58
    Ciao Pugia,
    grazie per la dritta!
    Se clicco su cancella però mi da queto errore:

    Warning: unlink(file.doc) [function.unlink]: No such file or directory in D:\webroot\http://www.miosito.it\public\file_up...lla_upload.php on line 3

    Che devo fare? E' come se andasse a cercare nella stessa cartella del file php,
    ma io i file li memorizzo su un'altra cartella ../file_uploaded

    Aiutoooo!
    Ciao e grz ancora

  6. #6
    prova con
    Codice PHP:
    unlink("public/file_uploaded/$filename"); 

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    58
    Sempre lo stesso errore:

    Warning: unlink(public/file_uploaded/file.doc) [function.unlink]: No such file or directory in D:\webroot\http://www.miosito.it\public\file_up...lla_upload.php on line 3

    Non è che per caso vuole che specifichi il percorso in un'altro modo?
    O che debba dargli dei permessi?

    Grazie

  8. #8
    prova così
    Codice PHP:
    unlink($_SERVER['DOCUMENT_ROOT']."public/file_uploaded/$filename"); 
    senza sapere come sono strutturate le cartelle del tuo sito posso andare solo a tentativi


  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    58
    Risolto!!!
    Sono stupido, era sufficiente dirgli che doveva andare indietro di una cartella:

    unlink("../file_uploaded/$filename");


    Grazie tante davvero, sei stato utilissimo.
    Ciao e "a presto" per altre dritte,
    Carlo

  10. #10
    Scusate, a me rende questo errore:

    Warning: unlink(http://www.miosito/wbboard/fotoforum/1-trieste3.jpg) [function.unlink]: No such file or directory in /srv/www/htdocs/clienti/miosito.it/admin/inserimenti_foto/cancellazione_foto.php on line 12
    Foto 1-trieste3.jpg cancellata
    La foto la cancello con questo script:

    Codice PHP:
    <?
    include("../../data.inc.php");
    session_start();
    if(!isset(
    $_SESSION['NomeUtente1'])){
        
    //echo "Accesso negato, non hai autorizzazioni sufficienti";
    die ("<font color='#990000' size='5'><center>PASSWORD ERRATA

    [url='login.php']FAI IL LOGIN[/url]</font></center>"
    );
    exit();
    }

    else{
    $filename_foto $_GET['foto_server']; 
    unlink ("http://www.miosito.it/wbboard/fotoforum/$filename_foto"); 
    echo 
    "Foto $filename_foto cancellata";}
    ?>
    A cui ci arrivo da:
    <? echo "<a href='cancellazione_foto.php?foto_server=$row[foto_server]'>Cancella Foto<a>"; ?>
    Sembra che pur dicendo di cancellare la foto sotto /wbboard/fotoforum/$foto non trovi qualcosa nella cartella da cui lancio l'unlink admin/inserimenti_foto/cancellazione_foto.php on line 12.
    Però dà anche Foto 1-trieste3.jpg cancellata

    La linea 12 è questa:

    Codice PHP:
    unlink ("http://www.miosito.it/wbboard/fotoforum/$filename_foto"); 
    Nessuno mi può spiegare perch?
    La cartella Fotoforum ha tutti i permessi in regola 777

    Grazie.

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.