MRW.it Forum
  • Home
  • Forum
  • Fare Web
  • PHP

Visualizzare i files di una Directory

  • Creatore Discussione Creatore Discussione raphael_php
  • Data di inizio Data di inizio 23 Feb 2012
R

raphael_php

Nuovo Utente
20 Feb 2012
13
0
0
  • 23 Feb 2012
  • #1
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

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 23 Feb 2012
  • #2
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.......
?>
 
R

raphael_php

Nuovo Utente
20 Feb 2012
13
0
0
  • 23 Feb 2012
  • #3
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
  • 23 Feb 2012
  • #4
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]));
 
R

raphael_php

Nuovo Utente
20 Feb 2012
13
0
0
  • 24 Feb 2012
  • #5
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
27
Roma
alessandro1997.netsons.org
  • 25 Feb 2012
  • #6
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.
 
R

raphael_php

Nuovo Utente
20 Feb 2012
13
0
0
  • 27 Feb 2012
  • #7
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 .

Ciao e Grazie in anticipo Luca
 
R

raphael_php

Nuovo Utente
20 Feb 2012
13
0
0
  • 28 Feb 2012
  • #8
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
 
Devi accedere o registrarti per poter rispondere.

Discussioni simili

L
Visualizzare files in una cartella con titolo in base al file
  • luigi777
  • 29 Giu 2012
  • PHP
Risposte
11
Visite
4K
PHP 3 Lug 2012
luigi777
L
Visualizzare tutti i files presenti in una directory
  • jan267
  • 26 Mag 2003
  • Classic ASP
Risposte
0
Visite
2K
Classic ASP 26 Mag 2003
jan267
I
visualizzare dati tabella
  • Imperor
  • 3 Giu 2024
  • PHP
Risposte
1
Visite
1K
PHP 3 Giu 2024
Imperor
I
I
visualizzare lista utenti registrati
  • Imperor
  • 13 Nov 2023
  • PHP
Risposte
1
Visite
1K
PHP 15 Nov 2023
Imperor
I
N
php problemi a visualizzare video
  • nik13
  • 8 Ott 2023
  • PHP
Risposte
3
Visite
2K
PHP 11 Ott 2023
WmbertSea
P
come posso visualizzare l'nvr online
  • Panda15004
  • 11 Mag 2023
  • IP Cam e Videosorveglianza
Risposte
1
Visite
1K
IP Cam e Videosorveglianza 8 Apr 2024
ortorob
O
K
Visualizzare del html responsive in una Webview
  • klomax
  • 27 Feb 2023
  • Sviluppo app per Android
Risposte
0
Visite
2K
Sviluppo app per Android 27 Feb 2023
klomax
K
M
Visualizzare ultima data registrata
  • muscaril
  • 31 Gen 2023
  • MS Access
Risposte
2
Visite
1K
MS Access 2 Feb 2023
muscaril
M
G
Numero zero null non deve visualizzare nulla
  • Gae
  • 18 Dic 2022
  • PHP
Risposte
0
Visite
1K
PHP 18 Dic 2022
Gae
G
D
visualizzare solo foto filtrate
  • djjunior
  • 13 Ott 2022
  • jQuery
Risposte
1
Visite
2K
jQuery 19 Ott 2022
djjunior
D
M
Visualizzare nuove domande in base a risposta precedente
  • Max61
  • 21 Feb 2022
  • PHP
Risposte
0
Visite
823
PHP 21 Feb 2022
Max61
M
N
  • Bloccata
Non Autorizzato. Dovresti rimuovere il parametro customize_messenger_channel per visualizzare l'anteprima in frontend.
  • Noemi
  • 22 Giu 2021
  • WordPress
Risposte
1
Visite
2K
WordPress 22 Giu 2021
Max 1
M
visualizzare ip cam in windows
  • minosat
  • 29 Mar 2021
  • IP Cam e Videosorveglianza
Risposte
0
Visite
1K
IP Cam e Videosorveglianza 29 Mar 2021
minosat
M
W
  • Bloccata
visualizzare solo file html e sottocartelle di una cartella
  • wilweb
  • 13 Mar 2021
  • PHP
Risposte
1
Visite
1K
PHP 14 Mar 2021
Max 1
visualizzare il codice senza usare gli &
  • napuleone
  • 18 Gen 2021
  • HTML e CSS
Risposte
1
Visite
2K
HTML e CSS 3 Ago 2021
Massimo Moretti
M
Y
Come caricare e visualizzare un'immagine
  • ymod
  • 22 Dic 2020
  • PHP
Risposte
0
Visite
1K
PHP 22 Dic 2020
ymod
Y
M
Visualizzare file PDF con link preso dal DB
  • Max61
  • 26 Lug 2020
  • PHP
Risposte
0
Visite
2K
PHP 26 Lug 2020
Max61
M
Visualizzare 2 bandiere
  • Alex_70
  • 23 Apr 2020
  • PHP
Risposte
6
Visite
1K
PHP 23 Apr 2020
Alex_70
Visualizzare anteprima foto in dropdown
  • Alex_70
  • 20 Apr 2020
  • PHP
Risposte
2
Visite
1K
PHP 20 Apr 2020
Alex_70
L
Visualizzare tabella all'interno finestra modal
  • Luca Ambrosini
  • 29 Feb 2020
  • PHP
Risposte
4
Visite
2K
PHP 5 Mar 2020
Luca Ambrosini
L
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • PHP
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?