Pagina 1 di 2

Modifica Lista

Inviato: 20/08/2012, 20:12
da Astro86
Un mio amico mi ha fatto una script in php che permette di leggere il contenuto di una directory... ma quando me la data, si è dimenticato di inserirmi una funzione... e cioè di far vedere solo file con determinate estensioni.

cosa che tuttora non fa, oltre a farmi vedere tutti i file, mi fa vedere anche le cartelle cosa che non vorrei far vedere dato che è una lista per far vedere le immagini caricate...



Ora io di php non capisco molto e questo mio amico non so quando e se lo rivedrò... quindi mi chiedevo se potevate dargli una occhiata e magari aggiungerci questa modifica se si può...

Codice: Seleziona tutto

<?
$cartella="/uploads/";

chdir("./$cartella");

if(!($dp = opendir("./")))
	die("Non riesco a esplorare il contenuto");

while($file = readdir($dp))
{
	if(is_file($file))
		$lista[] = $file;
}
if(!($dp = opendir("./")))
	die("Non riesco a esplorare il contenuto");
while($file = readdir($dp))
{
	if(!is_file($file))
	$lista[] = $file;
}
/*if(!($dp = opendir("./")))
	die("Non riesco a esplorare il contenuto");
while($file = readdir($dp))
{
	if(!is_file($file))
	$lista[] = $file;
}
*/
$alt="200";
$larg="200";
sort($lista);
?>
<strong><a href="index.php">Torna all'uploader</a></strong> <br>
<script type="text/javascript">var message=""; function clickIE() {if (document.all) {(message); return false}} function clickNS(e) {if (document.layers||(document.getElementById&&!document.all)) {if (e.which==2||e.which==3) {(message); return false}}} if (document.layers) {document.captureEvents(Event.MOUSEDOWN); document.onmousedown=clickNS} else {document.onmouseup=clickNS; document.oncontextmenu=clickIE} document.oncontextmenu=new Function("return false")</script><br />
<br />
<br />
<br />


	<?
			foreach($lista as $index => $nome)
			{
			?>
            <img src="<? echo $cartella; echo $nome; ?>" width="<?php echo $alt;?>" height="<?php echo $larg;?>" alt="">
		<?
			}
			?>
Ringrazio infinitamente chi mi aiuta

Re: Modifica Lista

Inviato: 21/08/2012, 9:03
da Micogian
Che cos'è che ti interessa, estrarre solo i file jpg ?
Potresti usare una condizione con la funzione strpos() che restituisce la posizione di una stringa.
Se il risultato è '0' la stringa non c'è e quindi non considera il file.
Esempio:

Codice: Seleziona tutto

while($file = readdir($dp))
{
   if(is_file($file))
      if (strpos($file, "jpg") > 0)
      {
      $lista[] = $file;
      }
}

Re: Modifica Lista

Inviato: 21/08/2012, 13:22
da Astro86
mi interesserebbe far uscire fuori solo i principali formati immagine .jpg, .png, .gif...

Re: Modifica Lista

Inviato: 21/08/2012, 13:38
da Micogian

Codice: Seleziona tutto

while($file = readdir($dp))
{
   if(is_file($file))
      if (strpos($file, "jpg") > 0 || strpos($file, "png") > 0 || strpos($file, "gif") > 0)
      {
      $lista[] = $file;
      }
}

Re: R: Modifica Lista

Inviato: 21/08/2012, 14:36
da Andrea RBR-W
Consiglio: prendi gli ultimi 3 caratteri e crei un array con le estensioni disponibili.. se hai bisogno di uns nuova estensione basta ke la inserisci nell'array..

X verificare le l'estensione del file sia tra quelle permesse usi la funzione in_array..

Inviato dal mio Vodafone 858 con Tapatalk 2

Re: Modifica Lista

Inviato: 21/08/2012, 18:36
da Andrea RBR-W
eccomi qua... xkè da pc ho qualke codice in più.... :D

Codice: Seleziona tutto

$array_ext = array("jpg","gif","....");

....CODICE....

while($file = readdir($dp)) {
   if(is_file($file)) {
      if (in_array(strtolower(substr($file,-3)), $array_ext)) {
          $lista[] = $file;
      }
    }
} 
così ti gestisce sia le estensione maiuscole ke le minuscole... se vuoi solo uno o l'altro, togli strtolower...

Re: Modifica Lista

Inviato: 21/08/2012, 21:23
da Astro86
scusate l'ignoranza, ma ora basta che aggiungo il codice al resto della script o ooo?...

Re: Modifica Lista

Inviato: 21/08/2012, 23:16
da Micogian
Mi sembra abbastanza chiaro, che tu usi un sistema o l'altro dovrebbero funzionare entrambi.
Sta a te decidere quale utilizzare, e tutti rappresentano una parte del tuo codice cha va sostituito, si dovrebbe capire quale.
Il bello del PHP è che spesso ci sono soluzioni diverse che portano allo stesso risultato.

Re: Modifica Lista

Inviato: 22/08/2012, 0:52
da Astro86
già... Ok grazie infinite, ora l'ultimo pezzo del puzzle... mi da nella lista anche la cartella dove sono presenti le immagini, cioè /uploads/. e altre cartelle che non vorrei far vedere poiché servono ad altro ma sono essenziali... si possono oscurare?

Re: Modifica Lista

Inviato: 22/08/2012, 8:59
da Andrea RBR-W
prova così...

Codice: Seleziona tutto

    $array_ext = array("jpg","gif","....");

    ....CODICE....

    while($file = readdir($dp)) {
       if((is_file($file)) && (!is_dir($file))) {
          if (in_array(strtolower(substr($file,-3)), $array_ext)) {
              $lista[] = $file;
          }
        }
    }