Back to top

Autore Topic: lista link dei file all'interno di una cartella  (Letto 4772 volte)

Offline kikko088

  • Esploratore
  • **
  • Post: 130
    • Mostra profilo
lista link dei file all'interno di una cartella
« il: 02 Ago 2011, 23:26:59 »
Ciao a tutti, nel mio template utilizzo questo comando per visualizzare un file all'interno di una cartella


<a href="<?php echo JURI::root().'images/com_jea/images/'.$this->row->id.'/secondary/Planimetria.pdf' ?>" title="PDF">PDF[/url]


il problema però è che non conosco il nome del file, c'è un modo per visualizzare i link di tutti i file pdf presenti all'interno della cartella?
grazie mille

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:lista link dei file all'interno di una cartella
« Risposta #1 il: 03 Ago 2011, 15:41:55 »
ciao, puoi usare la funzione glob di php per leggere tutti i files e poi effettuare un loop sull'array restituito.

due cose:
1. far vedere tutti i files non è mai cosa buona: filtra i risultati
1. la lettura ed il 'filtraggio' dovrebbe essere nel model, al limite nella view, mai nel template.

ciao,
marco

mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline kikko088

  • Esploratore
  • **
  • Post: 130
    • Mostra profilo
Re:lista link dei file all'interno di una cartella
« Risposta #2 il: 04 Ago 2011, 22:54:32 »
ciao, allora alla fine ho combinato, la cartella era una cartella con sole immagini e file pdf e sono riuscito a filtrare solo i pdf come mi serviva....ora ho un'altro problema, quando cerco di cancellare un file mi da un'errore "invalid Token"


questo è il codice



Codice: [Seleziona]
<?php 
$id 
$this->row->id
$dir "/Applications/MAMP/htdocs/cristian/images/com_jea/images/$id/secondary/"
// Open a known directory, and proceed to read its contents 
if (is_dir($dir)) { 
echo 
"<form action=\"\" method=\"POST\" onSubmit=\"confirm('Sicuro di voler cancellare questo file?');\"><select name=\"file\">" 
    if (
$dh opendir($dir)) { 
        while ((
$file readdir($dh)) !== false) { 
            
$ext substr($filestrrpos($file'.') + 1); 
            if (
$ext == 'pdf'){ 
            echo 
'<option value="'.$file.'">'.$file.'</option>'
            } 
        } 
        
closedir($dh); 
    } 
echo 
'</select>[br /][br /]<input type="submit" value="Cancella" name="canc" /></form>[br /]'

if(isset(
$_POST['canc'])) { 
$file_selezionato $_POST['file']; 


   if(
unlink($file)) { 
                     echo 
'File cancellato correttamente.'
                     } else { 
                     echo 
'Errore: riprovare.'
                     } 

?>





premetto che non è farina del mio sacco (non ne sono in grado XD ), ma sto cercando di adattarlo :(




kikko088

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:lista link dei file all'interno di una cartella
« Risposta #3 il: 05 Ago 2011, 08:26:37 »
Codice: [Seleziona]
if(isset($_POST['canc'])) {
$file_selezionato = $_POST['file'];
  if(unlink($file)) { [...] }
}

a parte che questo codice cancella l'ultimo file della directory e non $file_selezionato sarebbe, senza offesa, da spararti!! tu ricevi il nome di un file, magari comprensivo di path, e senza effettuare alcun controllo lo cancelli?? spero almeno che non sia nel front end: sai quanto ci metto a cancellarti tutto il sito?

"invalid Token" è il modo di joomla di comunicarti che stai operando al di fuori delle convenzioni di passaggio dati tra le pagine all'interno del framework. infatti nella form mancano tutti i campi hidden per la specifica dei parametri necessari al funzionamento del routing interno a joomla: fai riferimento alla documentazione sulla creazione dei componenti per la spiegazione su come scrivere il codice.

ciao,
marco


mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline kikko088

  • Esploratore
  • **
  • Post: 130
    • Mostra profilo
Re:lista link dei file all'interno di una cartella
« Risposta #4 il: 05 Ago 2011, 11:34:11 »
oro provo a documentarmi, vorrei solo specificare che ok non so programmare, non conosco bene joomla ma questo "hack" per cancellare un file lo faccio su un sito privato in cui possono accederci solo 5 persone, che a nessuno interessa far casini e sopratutto non ne sono in grado :D quindi è comunque qualcosa protetto da password...e visto che la path è cmq quella che dico io (di una cartella che viene creata con la creazione di un immobile e in cui risiedono 2-3 foto e un possibile file pdf)
Se fosse un sito pubblico non ci proverei neanche





kikko088

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:lista link dei file all'interno di una cartella
« Risposta #5 il: 05 Ago 2011, 11:41:28 »
ciao,
 giusto per spiegarmi meglio, dato che il nostro compito è anche quello di spiegare, il discorso path non è esattamente come pensi tu. mi spiego meglio: il problema sta nel fatto che tu consideri 'trusted' ciò che arriva via POST, mentre queste informazioni sono facilmente modificabili (pensa a firebug o web developer per FF) per far puntare a qualsiasi file del sito. quindi sarebbe semplice modificare il value della select per far cancellare qualsiasi cosa si voglia.

devi controllare sempre che cosa arriva e verificare che sia solo il nome del file, poi la path la aggiungi tu.

la sicurezza non deve basarsi sulle buone intenzioni degli altri, ma deve essere una forma mentis.

ciao e buon lavoro,
marco
« Ultima modifica: 05 Ago 2011, 11:46:21 da mmleoni »
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

 



Web Design Bolzano Kreatif