ďťż

[php] Listowanie

       

Podstrony


telcocafe

Witam,
mam skrypt listujacy pliki i katalogi ...
<?php $katalog=strip_tags($_GET['katalog']); } if($katalog!=="../") { $kh=opendir($katalog); while(!is_bool($plik=readdir($kh))) { if($plik!='.'&&$plik!='..') { if(is_dir("$plik")) { echo'<a href="cosik.php?katalog='.$katalog.$plik.'/">'.$plik.'< /a><br>'; } elseif(is_file("$plik")) { echo'<a href="'.$katalog.$plik.'">'.$plik.'</a><br/> '; } } } closedir($kh); } else { $sciezka=FALSE; echo'<p class="no">Coś nie pykło? :]</p>'; } echo'<br><br>'.$katalog.'</br>'; ?>
Wszystko działa niby dobrze, ale nie listuje mi wszystkich katalogow, a pliki tylko php i html, zadnych mp3, wav, pdf, czy innych nie chce wylistowac :(

Co zrobic zeby listowal pliki tylko te, ktorych rozszerzenia znajduja sie w tablicy $dozwolone?

Myslałem zeby obcinac rozszerzenie z pliku poprzez substr($plik,-3) ale nie wiem jak sprawdzic czy ta zawrocona wartosc znajduje sie w tablicy $dozwolone...

Z gpry dzieki




Co zrobic zeby listowal pliki tylko te, ktorych rozszerzenia znajduja sie w tablicy $dozwolone? if( is_array('rozszerzenie', $dozwolone) ) { ... }

Poczytaj o funkcji strrchr(), aby wydobyć rozszerzenie.

Warning: is_array(): Only one argument expected in c:\usr\apache\httpd\html\cosik.php on line 18 co to znaczy?
<?php $katalog=strip_tags($_GET['katalog']); $dozwolone=array("html", "php"); if($katalog!=="../") { $kh=opendir($katalog); while(!is_bool($plik=readdir($kh))) { if($plik!='.'&&$plik!='..') { if(is_dir("$plik")) { echo'<a href="cosik.php?katalog='.$katalog.$plik.'/">'.$plik.'< /a><br>'; } elseif(is_file("$plik")) { $rozszerzenie=substr($plik, -3); if( is_array($rozszerzenie, $dozwolone) ) { echo'<a href="'.$katalog.$plik.'">'.$plik.'</a><br/>' ; } } } } closedir($kh); } else { $sciezka=FALSE; echo'<p class="no">Coś nie pykło? :]</p>'; } echo'<br><br>'.$katalog.'</br>'; ?>
Użytkownik kowalski.jasio edytował ten post 30 styczeń 2007, 09:33

Warning: is_array(): Only one argument expected in c:\usr\apache\httpd\html\cosik.php on line 18 if( is_array($rozszerzenie, $dozwolone) ) {Przeczytaj sobie to. Łapiesz? Za dużo parametrów - is_array może mieć tylko 1 param. - zmienną, którą sprawdzamy, czy jest tablicą.
Chyba funkcje Ci się pokićkały :P Może chodziło Ci o podobnie brzmiącą in_array() ;) :P ?



faktycznie :P
jeszcze mi powiedz czemu wszystkich katalogow nie listuje ?
jak otworze jakis katalog przez ten skrypt to nie widzi folderow, ktore tam sa ...
Użytkownik kowalski.jasio edytował ten post 30 styczeń 2007, 12:26
Jak wszystkich nie listuje? U mnie pokazuje wszystkie.
Jeśli mówisz o "." i ".." to nie dziw się, gdyżif($plik!='.'&&$plik!='..') { /* ... */ }
Aha proponuję na początku wstawić instrukcję sprawdzania, czy katalog został podany, i czy jest poprawny, bo parser może się czepiać :)<?php if ((empty($_GET['katalog'])) || (!file_exists($_GET['katalog']))) die('Nie wybrano katalogu bądź wybrany nie istnieje!');

PS Taki alternatywny kodzik, pisany na szybko (wiem, że wielu powie że jest lekko zawiły, ale co tam) :P<? ### fast listing code by DJ ProG ### $curpath = './'; $dir = dir($curpath); while ($file = $dir->read()) { $s = "<a href=\"$curpath$file\">$file</a>"; if (is_dir($file)) { # if (!(($file=='.') || ($file=='..'))) $d[] = '[ '.$s.' ]'; } else $l[] = $s; } $dir->close(); sort($d); sort($l); for ($i=0;$i<count($d);$i++) echo $d[$i]."<br />\r\n"; for ($j=0;$j<count($l);$j++) echo $l[$j]."<br />\r\n"; ?>(jeśli chcesz, by nie wyświetlał katalogu '.' i '..' usuń '#' ;))
Użytkownik DJ_ProG edytował ten post 30 styczeń 2007, 20:12
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.