Newsgroup: it.comp.www.php
Titolo: hidden files

Ciao a tutti vorrei cancellare dei file di una cartella su un server e ho 
fatto questo molto spartanamente:
<html><head>
<script type="text/javascript" src="js.js"></script>
</head><body>
<?php
 $dir = ".";
$handle = opendir($dir);
 while(($file = readdir($handle)) !== FALSE)
{
$percorso = "$dir/$file";
 if(is_file($file)){
 echo
 "<a href=\"$percorso\">$file</a>  <input type=\"button\" value=\"Cancella\" 
OnClick=\"Cancella('".$percorso."');\"><br>\n";
}
}
?>
</body></html>
Qeusto mi fa vedere il contenuto della cartella e i file da cancellare. Il 
collegamento a javascript è in ajax che si preoccupa di spedire il comando 
"Cancella" al file delete.php che mi conferma oppure no la cancellazione del 
file.
Ora vorrei nascondere alcuni file della cartella per nn permettere la 
visualizzazione e quindi anche il comando cancella, come posso fare?
Grazie a tutti.
Francesco 
__________ Informazioni da ESET NOD32 Antivirus, versione del database delle firme digitali 5247 (20100702) __________
Il messaggio è stato controllato da ESET NOD32 Antivirus.
www.nod32.it

 
$hidden_files=array('pippo.txt','tolopino.txt','file_segreto.doc');
if(is_file($file) && !in_array($file,$hidden_files)){
echo "<a href=\"$percorso\">$file</a>  <input type=\"button\" 
value=\"Cancella\" OnClick=\"Cancella('".$percorso."');\"><br>\n";
}
questo per� ovviamente ti tutela solo dal non far vedere i file che tu 
inserisci nell'array al tuo utente, se lui eventualmente modificasse a 
mano l'html o la chiamata ajax passandogli il nome di un file che tu hai 
nascosto il delete.php lo canceller� uguale, devi mettere un controllo 
uguale anche lato server per essere sicuro che non lo cancellino 
"fraudolentemente"


Grazie ho provato ad aggiungere il codice che mi hai dato ma i file 
nell'array(sostituiti con i miei) si continuano a vedere lo stesso.. qualche 
suggerimento? 
__________ Informazioni da ESET NOD32 Antivirus, versione del database delle firme digitali 5252 (20100705) __________
Il messaggio è stato controllato da ESET NOD32 Antivirus.
www.nod32.it

 qualche suggerimento?
Niente grazie ancora avevo sbagliato io...  ora funziona alla perfezione.... 
e terro' conto del discorso server. 


 perfezione.... e terro' conto del discorso server.
quello č per la tua sicurezza altrimenti ti possono cancellare qualsiasi 
file
un altro paio di cose ad esempio sono controllare i path per essere 
sicuri che magari non inviino un valore tipo:
../../file_di_sistema.bin
con questa sintassi se apache o chi per lui č configurato male tu 
potresti "uscire" dalla directory "web" e far danni in giro per il resto 
del file system.
un'altra cosa per esperienza (ma dipende da te), quando passi da web a 
php il valore del file da cancellare, io preferisco codificarto (in hex 
per la precisione) cosě da non avere problemi con eventuali spazi, 
accenti o lettere non latine nei nomi file, in pratica invece di 
prendere il nome del file dallo scandir diretto lo faccio prima passare 
nella funzione che codifica in hex e poi lo pubblico su web, quando 
l'utente clicca sul link per cancellarlo al php arriva qualcosa tipo
delete.php?nomefile=54:12:q1:3r:6E:54:11:e3
quando vai a fare l'unlink invece el nome file gli passi l'output della 
funzione di decodifica hex (ad esempio 
unlink(hex2str($_POST['nomefile']));  )