Visualizzare i files di una Directory

raphael_php

Nuovo Utente
20 Feb 2012
13
0
0
Buongiorno a tutto lo staff e ai partecipanti del forum, innanzi tutto mi presento: mi chiamo Luca e sono un nuovo utente del forum.
Premetto che sono un neofita in questa materia e che faccio tutt'altro nella vita quindi le mie domande posso essere forse forse banali. Qualche volta mi diletto a fare qualche programmino in access o excel che mi può essere utile sul lavoro. Cercando una soluzione ad una mia idea mi è capitato di trovare un vecchio progetto open source su sourceforge.net chiamato Philer orami abbandonato da anni e ho voluto provare ad utilizzarlo, armato quindi di Easyphp ho cercato di fare funzionare lo script ma mi sono arenato.
Essendo il mio obiettivo quello di realizzare un'area riservata per utenti del tipo una cartella per utente ho pensato di utilizzare una combinazione di script per raggiungere l'obiettivo. In pratica pensavo di abbinare uno script di login php Mysql, uno script dinamico per la visualizzazione dei files nella directory, bloccare la directory tramite .htaccess e quindi utilizzare uno script per il force download.
La prima parte sono riuscito a realizzarla partendo da uno script che ho trovato sul sito, ora ho un problema con lo script di visualizzazione, in pratica mi restituisce sempre degli errori se cerco di esplorare una dir diversa da ./ ( con $dir = "./"; tutto funziona bene con $dir = "./DocuServer/cartella1/"; ho l'errore, considerato che $dir = "variabile proveniente da database".

PHP:
<?php
// definizione variabile cartella da esplorare
$dir = "./DocuServer/cartella1/";

// open this directory 
$myDirectory = opendir("$dir");

// get each entry
while($entryName = readdir($myDirectory)) {
	$dirArray[] = $entryName;
}

// close directory
closedir($myDirectory);

//	count elements in array
$indexCount	= count($dirArray);
Print ("$indexCount files<br>\n"); echo "<br>";

// sort 'em
sort($dirArray);

// print 'em
print("<TABLE border=1 cellpadding=5 cellspacing=0 class=whitelinks>\n");
print("<TR><TH>Filename</TH><th>Filetype</th><th>Filesize</th></TR>\n");
// loop through the array of files and print them all
for($index=0; $index < $indexCount; $index++) {
        if (substr("$dirArray[$index]", 0, 1) != "."){ // don't list hidden files
		print("<TR><TD><a href=\"$dirArray[$index]\">$dirArray[$index]</a></td>");
		print("<td>");
		print(filetype($dirArray[$index]));
		print("</td>");
		print("<td>");
		print(filesize($dirArray[$index]));
		print("</td>");
		print("</TR>\n");
	}
}
print("</TABLE>\n");
 
?>

L'errore è il seguente
Warning: filetype() [function.filetype]: Lstat failed for EGGH.txt in F:\EasyPHP\www\login_system\list_file_new.php on line 31
Warning: filesize() [function.filesize]: stat failed for EGGH.txt in F:\EasyPHP\www\login_system\list_file_new.php on line 34

Dove baglio? Qualcuno potrebbe gentilmente correggermi il codice. Grazie mille per l'aiuto, ogni eventuale suggerimento per la realizzazione del mio progetto è il benvenuto. Conoscete per caso un progetto completo, open source, che permetta la gestione 1 a 1 utente <- cartella o qualche cosa di simile a Philer.

Ciao e grazie in anticipo Luca
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
benvenuto nel forum
intanto sei sicuro che in $dirArray[$index] ci sia un nome di file? e come è scritto?
se si devi mettere anche il percorso es.
se la tua pag. list_file_new.php è nella cartella login_system e il file in una sua sottocartella devi indicarle
print(filesize("sottocartella/".$dirArray[$index]));

o se altre cartelle

print(filesize("../altra_cartella/".$dirArray[$index]));
altimenti ti cerca il file contenuto in $dirArray[$index] nella cartella stessa login_system
ti conviene commentare le righe che ti danno errore e mettere un var_dump() che poi toglierai così vedi cosa esattamente ti contiene l'array

PHP:
<?php
//....tutto quello che viene prima..........
var_dump($dirArray);//**qui guardi cosa hai dentro l'array
/*
print("<TABLE border=1 cellpadding=5 cellspacing=0 class=whitelinks>\n");
print("<TR><TH>Filename</TH><th>Filetype</th><th>Filesize</th></TR>\n");
// loop through the array of files and print them all
for($index=0; $index < $indexCount; $index++) {
        if (substr($dirArray[$index], 0, 1) != "."){ // don't list hidden files ** togli i due apici
        print("<TR><TD><a href=\"$dirArray[$index]\">$dirArray[$index]</a></td>");
        print("<td>");
        print(filetype($dirArray[$index]));
        print("</td>");
        print("<td>");
        print(filesize($dirArray[$index]));
        print("</td>");
        print("</TR>\n");
    }
}

print("</TABLE>\n");
*/
//eccetera.......
?>
 

raphael_php

Nuovo Utente
20 Feb 2012
13
0
0
Grazie mille borgo italia, il tuo suggerimento è stato risolutivo è bastato aggiungere la variabile $dir anche agli altri elementi è ora la visualizzazione è perfetta.

PHP:
// interrogazione database
//  $result = mysql_query("SELECT * FROM ".$prefix."_users WHERE userid='$userid'");
//  $row = mysql_fetch_array($result);

$result = $db->sql_query("SELECT * FROM ".$prefix."_users WHERE userid='$userid'");
$row = $db->sql_fetchrow($result);
$virtualdx = $row['virtualdx'];
//       echo "$virtualdx"; 		 

$dir = "$virtualdx";

// open this directory 
$myDirectory = opendir("$dir");
.....
print(filetype("$dir".$dirArray[$index]));
print(filesize("$dir".$dirArray[$index]));
print date("d F Y ", (filemtime("$dir".$dirArray[$index])));

Ciao e grazie ancora
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Nel codice è possibile fare alcune correzioni, ad esempio, perché assegnare due volte uno stesso valore?
PHP:
$dir = $row['virtualdx'];
Inoltre perché delimintare una variabile pura?
PHP:
$myDirectory = opendir($dir);
e
PHP:
print(filetype($dir.$dirArray[$index]));
 

raphael_php

Nuovo Utente
20 Feb 2012
13
0
0
Grazie mille Eliox, grazie ai tuoi suggerimenti ho ripulito il codice sopprimendo la variabile $dir.

PHP:
$virtualdx = $row['virtualdx'];
...
$myDirectory = opendir($virtualdx);
.....
print(filetype($virtualdx.$dirArray[$index]));

Oggi proverò a realizzare il sistema di download protetto partendo da un articolo trovato in rete.

Ciao e grazie per gli utili suggerimenti
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Anche la variabile $virtualdx non ti serve:
PHP:
$myDirectory = opendir($row['virtualdx']);

Comunque, invece di usare le vecchie funzioni opendir, readdir e closedir, usa gli iteratori di PHP. Se fai una ricerca sul forum dovresti trovare una risposta che ho dato ad un utente qualche tempo fa.
 

raphael_php

Nuovo Utente
20 Feb 2012
13
0
0
Ciao alessandro1997, grazie mille per il suggerimento, ho provato a capire questi iteratori ma la mia conoscenza è troppo limitata quindi devo rimanere al momento su funzioni base che anche se vecchie mi permettono di riuscire almeno a capire in parte il codice che sto usando.
Avrei un'altra domanda, al momento per visualizzare due aree uso due file pubblica.php e riservara.php che in pratica differiscono solo per una variabile che viene presa da un campo del database e cioè:

PHP:
$virtualdx = $row['virtualdx']; per l'area riservata 
$virtualdy = $row['virtualdy']; per l'area pubblica

alle due pagine arrivo selezionandole attraverso il sottostante menu, volevo chiedervi se esiste un modo per selezionare le variabili con un if pagina aperta tramite "Area pubblica" then $dir=$row['virtualdx'] else $dir=$row['virtualdy'] in modo da eliminare una pagina php?

PHP:
function navigation_menu(){
echo  " <center>"
     ." [ <a href=\"pubblica.php\">"Area pubblica"</a> ] "
     ." [ <a href=\"riservata.php\">"Area Riservta"</a> ] "
     ." [ <a href=\"users.php\">"._MY_ACCOUNT."</a> ] "     
     ." [ <a href=\"users.php?act=Logout\">"._LOGOUT."</a> ]"
     ." </center><br>";
}

PS guardando questa pagina mentre le scrivevo forse ho capito, e se facessi

PHP:
 ." [ <a href=\"pubblica.php?area=1\">"Area pubblica"</a> ] "
     ." [ <a href=\"riservata.php?area=2\">"Area Riservta"</a> ] "

e nel file di destinazione recuperassi le variabili con un GET? ora provo :cool: .

Ciao e Grazie in anticipo Luca
 

raphael_php

Nuovo Utente
20 Feb 2012
13
0
0
L'intuizione era buona e funziona, sono riuscito a trasferire la variabile di directory al file docu_system.php

PHP:
function navigation_menu(){
echo  " <center>"
     ." [ <a href=\"index.php\">"._HOME."</a> ] "
     ." [ <a href=\"docu_system.php?area=publica\">"._AREA_P."</a> ] "
     ." [ <a href=\"docu_system.php?area=riservata\">"._AREA_S."</a> ] "
     ." [ <a href=\"users.php\">"._MY_ACCOUNT."</a> ] "      
     ." [ <a href=\"users.php?act=Logout\">"._LOGOUT."</a> ]"
     ." </center><br>";
}

dove seleziono le directory utilizzando un semplice if then

PHP:
//--- Identificazione area destinazione --------
$area = isset($_GET['area']) ?  $_GET['area']  : '';
//var_dump($area);
//--- Fine -------------------------------------

//--- Selezione directory di lavoro ------------

if ($area == 'publica') {
//    echo "Publica";
$dir = $row['virtualdy'];
} elseif ($area == 'riservata') {
//    echo "Riservata";
$dir = $row['virtualdx'];
} else {
    echo "Errore area";

}

//--- Fine -------------------------------------

// open this directory (soppresso dal ciclo if)
$myDirectory = opendir($dir);

ma a questo punto non so come trasferire la variabile di directory al sistema di download protetto download_file.php , è possibile trasferire due variabili attraverso il form?

PHP:
print("<form action=\"./download_file.php?file="."$dirArray[$index]\" method=\"post\">");		
print("<input type='submit' value='"._DWNL_FILE."'>"); 
print("</form>");

Ciao e grazie Luca
 
Discussioni simili
Autore Titolo Forum Risposte Data
L Visualizzare files in una cartella con titolo in base al file PHP 11
jan267 Visualizzare tutti i files presenti in una directory Classic ASP 0
I visualizzare lista utenti registrati PHP 1
N php problemi a visualizzare video PHP 3
P come posso visualizzare l'nvr online IP Cam e Videosorveglianza 0
K Visualizzare del html responsive in una Webview Sviluppo app per Android 0
M Visualizzare ultima data registrata MS Access 2
G Numero zero null non deve visualizzare nulla PHP 0
D visualizzare solo foto filtrate jQuery 1
M Visualizzare nuove domande in base a risposta precedente PHP 0
N Non Autorizzato. Dovresti rimuovere il parametro customize_messenger_channel per visualizzare l'anteprima in frontend. WordPress 1
M visualizzare ip cam in windows IP Cam e Videosorveglianza 0
W visualizzare solo file html e sottocartelle di una cartella PHP 1
napuleone visualizzare il codice senza usare gli & HTML e CSS 1
Y Come caricare e visualizzare un'immagine PHP 0
M Visualizzare file PDF con link preso dal DB PHP 0
Alex_70 Visualizzare 2 bandiere PHP 6
Alex_70 Visualizzare anteprima foto in dropdown PHP 2
L Visualizzare tabella all'interno finestra modal PHP 4
P Visual Studio VB.NET Visualizzare un messaggio alla scadenza. .NET Framework 0
J [PHP] Visualizzare risultato query stessa pagina PHP 3
B visualizzare una sola riga Database 3
Alex_70 [PHP] Visualizzare foto tramite select PHP 0
K [ASP] Visualizzare nome del file selezionato Classic ASP 3
M [PHP] Visualizzare un array partendo dal numero 1 e non 0 PHP 5
L [PHP] Visualizzare utente dopo login PHP 0
L [PHP] Visualizzare se una pagina è pingata PHP 1
M [PHP] Visualizzare nell'alert il calcolo PHP 4
D [WordPress] come fare per estrarre dati da un db MySQL tramite una form e visualizzare il risultato WordPress 0
L come visualizzare array di oggetti php PHP 9
S [PHP] visualizzare commento su un prodotto precedentemente selezionato PHP 2
V [Javascript] Visualizzare o nascondere div figlio Javascript 4
W [PHP] Visualizzare errori su Statements in MySQLi PHP 3
S [javascript] visualizzare/nascondere div Javascript 3
felino [Javascript] [jQuery] Slick Carousel: visualizzare una porzione dell'immagine successiva Javascript 0
W [Javascript] Visualizzare l'href di un link nascosto Javascript 0
L [HTML] Problemi a visualizzare le modifiche eseguite alle pagine del sito. HTML e CSS 2
G [HTML] Visualizzare iframe in un blog non funziona sempre xchė? HTML e CSS 3
tritabit [HTML] Visualizzare stelle tipo rating HTML e CSS 5
A Visualizzare div quando le immagini sono state uploadate con successo (Ajax) Ajax 0
T Visualizzare un Xml su un sito in modo semplice XML 1
F Visualizzare data in formato gg/mm/aaaa da database mysql. PHP 3
M [PHP] Visualizzare record nel db PHP 2
M Visualizzare immagini in PHP - MYSQL PHP 0
M Visualizzare immagini da DB in php PHP 0
ecosito [WordPress] Visualizzare una mappa con i pin dei post tramite GPS? WordPress 4
G [PHP] CodeIgniter - Visualizzare singolo risultato PHP 4
Y VISUALIZZARE IMMAGINI DA DB PHP/MYSQL PHP 7
trattorino [PHP] funzione per visualizzare solo carattere PHP 2
S [HTML] Visualizzare XML formattato in HTML HTML e CSS 9

Discussioni simili