Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Problema unlink

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    118

    Problema unlink

    Salve,

    ho un problema con la suddetta funzione.
    Ho una pagina con la lista delle immagini lette da una cartella e visualizzate, con la possibilità di eliminare uno o piu file spuntando la relativa checkbox.
    Per l'eliminazione ho usato la funzione unlink().
    Se seleziono un'immagine da cancellare, il cui nome ha un apostrofo, mi appare il seguente errore:

    Warning: unlink(../../gallery/img/L') [function.unlink]: No such file or directory...

    L'immagine presa come esempio ha il nome: "L'illusione".
    Per tutte le altre immagini lo script funziona correttamente.
    Qui di seguito lo script della funzione unlink().

    Spero in un vostro aiuto.
    Grazie.

    Codice PHP:
    <?php
        $path 
    "../../gallery/img/";
        if(isset(
    $_POST['file']) && is_array($_POST['file']))
        {
        foreach(
    $_POST['file'] as $file)
        {    
        
    unlink($path $file) or die("Failed to delete file");
        }
        }
    ?>

  2. #2
    Perche' l'apice usato per l'apostrofo e' lo stesso usato come delimitatore di stringa.

    Vedi nel tuo stesso script a che serve l'apice. Quindi quando il php incontra l'apice pensa ad una fine stringa ed ovviamente il nome mozzato non esiste nella tua cartella.

    Personalmente non permetto l'uso dei caratteri di controllo nel nome del file. Per il database si utilizza il carattere di escape \ per definire il carattere che segue come stringa e non come controllo.

    gallery/img/L\'illusione

    E' un problema che non ho mai dovuto affrontare nel nome dei file perche' non ne permetto l'uso. Quando capita lo faccio sostituire con _

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    118
    Originariamente inviato da piero.mac
    Perche' l'apice usato per l'apostrofo e' lo stesso usato come delimitatore di stringa.

    Vedi nel tuo stesso script a che serve l'apice. Quindi quando il php incontra l'apice pensa ad una fine stringa ed ovviamente il nome mozzato non esiste nella tua cartella.

    Personalmente non permetto l'uso dei caratteri di controllo nel nome del file. Per il database si utilizza il carattere di escape \ per definire il carattere che segue come stringa e non come controllo.

    gallery/img/L\'illusione

    E' un problema che non ho mai dovuto affrontare nel nome dei file perche' non ne permetto l'uso. Quando capita lo faccio sostituire con _
    Ti ringrazio per la risposta.
    Quindi non esiste un modo per risolvere questa problematica legata all'apostrofo?

    L'upload di foto il cui nome contiene un apostrofo le carica correttamente, ma con unlink non me le elimina.
    Si può intervenire in qualche modo?

    grazie.

  4. #4
    Originariamente inviato da gahan
    Ti ringrazio per la risposta.
    Quindi non esiste un modo per risolvere questa problematica legata all'apostrofo?

    L'upload di foto il cui nome contiene un apostrofo le carica correttamente, ma con unlink non me le elimina.
    Si può intervenire in qualche modo?

    grazie.
    Diciamo che sarei meno diretto a permettere la cancellazione di file direttamente da un $_POST. Che succederebbe se il nome del file fosse *.* ???
    Anche il controllo che fai su POST isset() e is_array() e' discutibile perche' sicuramente e' un array e isset() potrebbe essere settato ma vuoto. Meglio con !empty() per verificare se contiene qualcosa. Controllerei anche che l'estensione del nomefile sia tra le ammesse. (.jpg .png ecc.)

    Ti faccio un esempio di unlink() prendendo il nome dal db quindi con nome gia' verificato

    codice:
                       if(file_exists("../album/$row2[nome_file]") )    {
                          unlink("../album/$row2[nome_file]");
                          } else { quel che ti serve }
    meglio gestire l'eventuale errore senza segnalarlo all'utente.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.