Ciao a tutti
ho una super domandona...
io ho bisogno di una pagina php (anche vuota) che mi elenchi i nome dei file che contiene una determinata cartella sul server... come posso fare?
Ciao a tutti
ho una super domandona...
io ho bisogno di una pagina php (anche vuota) che mi elenchi i nome dei file che contiene una determinata cartella sul server... come posso fare?
Elencare File Cartella Php
Si perde più tempo a postare e attendere risposta che a cercare
"Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix
[ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
consoliwebsite.altervista.org
se l'ho scritto è xke non riesco a inserirli in pagine php cmq ok mi affido a google.
grazie
azz, da quanto tempo non scrivevo qualcosa in phpCodice PHP:
<?php
// @visualizzazione: metti 0 se vuoi il contenuto solo di una cartella, metti 1 se vuoi navigare
$visualizzazione = 0;
// @nome_cartella: il nome della cartella di cui vuoi stampare il contenuto
$nome_cartella = 'test';
//--------------------------
// @nome_account: il nick del tuo account
$nome_account = "xsescott";
//inizio controllo visualizzazione
if($visualizzazione == 1){
$nome_cartella = $_GET['dir'];
if(!isset($nome_cartella)){$nome_cartella='./';} //se non esiste passo la root
}
$od=opendir('/membri/'.$nome_account."/".$nome_cartella);
while(false!==($rd=readdir($od))){
if($rd != '.' && $rd != '..'){ //elimino . e ..
if(is_dir('/membri/'.$nome_account."/".$nome_cartella."/".$rd)){
$cartelle[]=$rd;
//carico l'array delle directory
}
if(is_file('/membri/'.$nome_account."/".$nome_cartella."/".$rd)){
$file[]=$rd;
//carico l'array dei file
}
}
}
closedir($od);
if($visualizzazione == 1)
echo "Torna alla root: <a href=\"?dir=./\">Torna Indietro</a><br>";
$numerocartelle = count($cartelle); //conto le cartelle
echo "<br><br>"
."CARTELLE:".$numerocartelle."<br>";
if($numerocartelle > 0){
//stampo le cartelle
for($i=0;$i<$numerocartelle;$i++) {
if($visualizzazione == 1)
echo 1+$i.") <a href=\"?dir=".$cartelle[$i]."\">".$cartelle[$i]."</a><br>";
else
echo 1+$i.")".$cartelle[$i]."<br>";
}
}
//conto files
$numerofile = count($file);
echo "<br><br>"
."FILE:".$numerofile."<br>";
if($numerofile > 0){
for($i=0;$i<$numerofile;$i++){ echo 1+$i.")".$file[$i]."<br>";}
}
?>
Ultima modifica di Xsescott : 15-02-2009 alle ore 04.21.32
"Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix
[ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
consoliwebsite.altervista.org
quindi, se a me interessa il contenuto di
http://linuxmx.altervista.org/pippo/
devo modificare cosi? perche non mi va
Codice PHP:
// @visualizzazione: metti 0 se vuoi il contenuto solo di una cartella, metti 1 se vuoi navigare
$visualizzazione = 0;
// @nome_cartella: il nome della cartella di cui vuoi stampare il contenuto
$nome_cartella = 'http://linuxmx.altervista.org/black/';
//--------------------------
// @nome_account: il nick del tuo account
$nome_account = "xsescott";
su nome account devo mettere linuxmx nel mio caso?
acutissima osservazione con questo va:
Mi stampa i nomi cosi:Codice PHP:
<?php
foreach (glob("*.*") as $filename) {
echo "$filename" . "\n";
}
?>
1) è possibile fare in modo che stampi cosi?Codice:1.php 2.php tux.jpg
2) è possibile aggiungere in automatico il link a tale file?Codice:1.php 2.php tux.jpg
Altrimenti li puoi pure contare:Codice PHP:
<?php
foreach (glob("*.*") as $filename) {
print '<a href="$filename">' . $filename . '<br />';
}
?>
Codice PHP:
print '<ol>';
foreach (glob("*.*") as $filename) {
print '<li><a href="$filename">' . $filename . '</li>';
}
print '</ol>';
?>
Ultima modifica di biccheddu : 15-02-2009 alle ore 17.20.34
Codice PHP:
<?php
foreach (glob("*.*") as $filename) {
print '<a href="'.$filename.'">' . $filename . '<br />';
}
?>Una variabile racchiusa tra i singoli apici (es. '$var') non mostra il suo valore, mentre quelle racchiude tra i doppi apici si (es. "$var") .Codice PHP:
print '<ol>';
foreach (glob("*.*") as $filename) {
print '<li><a href="'.$filename.'">' . $filename . '</li>';
}
print '</ol>';
?>
Ultima modifica di miki92 : 15-02-2009 alle ore 18.11.18
Errore di distrazione, scusami
eccellente!!! era proprio quello che cercavo..
ho modellato il mio codice per aver 2 tipi di esensione:
solo che in questo caso, l'ordine alfabetico va a farsi friggere..Codice PHP:
<?php
print '<ol>';
foreach (glob("*.gz") as $filename) {
print '<li><a href="'.$filename.'">' . $filename . '</li>';
}
foreach (glob("*.spec") as $filename2) {
print '<li><a href="'.$filename2.'">' . $filename2 . '</li>';
}
print '</ol>';
?>
ce un modo per mantenere l'ordine alfabetico?Codice:Elenco file: 1. 1.gz 2. gnomad2-2.9.4.tar.gz 3. oop.gz 4. 1.spec 5. gnomad2.spec 6. jov.spec
Prova con sort()! Ciauu! ^^
puoi usare array_merge() per unire i più array, e poi sort() come suggerito sopra per riordinare tutti i file.Codice PHP:
$elenco = array_merge( glob( ... ), glob( ... ));
sort($elenco);
foreach($elenco as $filename)
...
Ultima modifica di dreadnaut : 15-02-2009 alle ore 20.05.52
sicuro? se io faccio cosi, come hai detto tu
mi da errore sulla rigaCodice PHP:
<?php
print '<ol>';
$elenco = array_merge( glob( *.gz), glob(*.spec));
sort($elenco);
foreach($elenco as $filename) {
print '<li><a href="'.$filename.'">' . $filename . '</li>';
}
print '</ol>';
?>
Codice PHP:
$elenco = array_merge( glob( *.gz), glob(*.spec));
Metti le virgolette:
Codice PHP:
$elenco = array_merge( glob('*.gz'), glob('*.spec'));
"Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix
[ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
consoliwebsite.altervista.org
"Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix
[ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
consoliwebsite.altervista.org
ragazzi grazie a voi sto facendo un lavoro stupendo..
ultima cosa, promesso
è possibile anche elencare la data di upload?
e avere la dimensione del file in kb o mb anziche in byte?
Allora a fine lavoro ce lo farai vedere ;)
Comunque per il primo punto non conosco la funzione per estrapolarla a basso livello,l'alternativa sarebbe quella di memorizzarla su file, quindi l'upload dovrebbe avvenire da un'altro script scritto ad hoc e che faccia anche ciò.
per la seconda basta che dividi i byte che suppongo che tu hai, cosi:
KB: byte/2^10
MB: byte/2^20
ciao
Ultima modifica di Xsescott : 16-02-2009 alle ore 03.15.25
"Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix
[ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
consoliwebsite.altervista.org
Cioè? mi puoi fare un esempio di codice?
Codice PHP:
<table width="900" border="1">
<tr>
<td width="400" align="left"><div align="left">Name</div></td>
<td width="100" align="left"><div align="left">Size (byte) </div></td>
<td width="400" align="left">Link</td>
</tr>
<tr>
<td width="400" align="left"><div align="left">
<?php
print '<ol>';
$elenco = array_merge( glob('*.gz'), glob('*.spec'), glob('*.rpm'), glob('*.bz2'));
sort($elenco);
foreach($elenco as $filename) {
print '<li>' . $filename . '</li>';
}
print '</ol>';
?>
</div></td>
<td align="left" width="100"><div align="left">
<?php $elenco = array_merge( glob('*.gz'), glob('*.spec'), glob('*.rpm'), glob('*.bz2'));
sort($elenco);
foreach($elenco as $filename) {
print '<a>' . filesize($filename) . '<br />';
}
?>
</div></td>
<td width="400" align="left"><div align="left">
<?php
print '<ol>';
$elenco = array_merge( glob('*.gz'), glob('*.spec'), glob('*.rpm'), glob('*.bz2'));
sort($elenco);
foreach($elenco as $filename) {
print '<a href="'.$filename.'">' . $filename . '<br />';
}
print '</ol>';
?></div></td>
</tr>
</table>
ecco qui crea una tabella aggiornata con nome file; dimensioni; e link per scaricarlo, contenuti nella cartella stessa in cui vi è la pagina con inserita tale tabella..
se qualcuno sa come cambiare il valore della dimensione da byte a kb non sarebbe male...
basta che dividi il valore di filesize per 1024 ;)
interessante la funzione glob() era proprio quello che cercavo...
scusate se vado un attimo offtopic, ma esiste un comando simile per eliminare i file? cioè un elenco di voci "elimina, elimina, elimina" che si ricollegano a questi script? in modo da eliminare i file?
scusate l'offtopic
Prova così:
Attenzione: questo script cancella tutti i file nella directory in cui e' eseguito
Se vuoi per tutti basta che modifichi:Codice PHP:
<?php
print '<ol>';
$elenco = array_merge(glob( *.gz), glob(*.spec));
sort($elenco);
foreach($elenco as $filename) {
print '<li><a href="'.$filename.'">' . $filename . '</a> - <a href="' . unlink($filename) . '">Elimina File</a></li>';
}
print '</ol>';
?>
PS: Le cartelle devono avere i permessi di scrittura impostati correttamenteCodice PHP:
$elenco = array_merge(glob( *.gz), glob(*.spec));
Ultima modifica di dreadnaut : 20-02-2009 alle ore 15.17.37
Bingo! ma è errato :D ti sei dimenticato che glob va scritto glob("*.estension")
cmq si presentano due problemi pesanti con questo tuo esempio:
1) se clicco su elimina mi comapre una pagina bianca inesistente chiamata 1 che si trova nella stessa pagina (penso sia piu giusto fare un refresh della pagina al termine di elimina)
2) se ho 100 file, qualsiasi "elimina" seleziono cancella tutti e 100 i file
---------------------------------------
azzo... la cosa è gravissima, con questo script, se carico la pagina mi vede tutti i file e a fianco mi chiede se cancellarli, ma se semplicemente aggiorno la pagina elimina tutto!!!!
------------------------------------------------
Ultima modifica di sezioneffe : 20-02-2009 alle ore 14.02.19
pazzia, qua stai richiamando la funzione unlink() (che cancella un file) per ogni file nell'elenco. Ma hai provato lo script prima di suggerirlo? no, ovviamente, perche' ti avrebbe dato errore su glob() che prende come argomento una stringa, e poi si sarebbe autocancellato...
Prova così:
EDIT: Mi sono accorto depo dell'errore dei GlobCodice PHP:
<?php
if(isset($_GET['a']) && $_GET['a']=='delete'){
if(isset($_GET['f'])){
if(isset($_GET['c']) && md5(filesize($_GET['f']))==$_GET['c']){ // Gli haker fanno schifo :P
unlink($_GET['f']);
}
}
}
print '<ol>';
$elenco = array_merge(glob("*.gz"), glob("*.spec"));
sort($elenco);
foreach($elenco as $filename) {
print '<li><a href="'.$filename.'">' . $filename . '</a> - <a href="?a=delete&f='.$filename.'&c='.md5(filesize($filename)).'">Elimina File</a></li>';
}
print '</ol>';
?>
Ultima modifica di yis : 20-02-2009 alle ore 15.28.58
Mi scuso, ho postato di fretta