Bestanden met gewenste extensie uit map gesorteerd

Door Joeri , 21 jaar geleden, 3.961x bekeken

Hier een variant voor het uitlezen van bestandsnamen in een map.
Alle bestandsnamen worden opgeslagen in een array die daarna verwerkt wordt om zo enkel de bestanden met gewenste extensie weer te geven.

Je kan uiteraard eender welke bewerking uitvoeren op de array bvb. om menu's mee te maken of muziek of afbeeldingen weer te geven. Links creƫren.

Er staan al meerdere soortgelijke scripts op phphulp.nl maar vond deze toch wel vrij eenvoudig.

P.S.: je kan uiteraard de van de $extensie en $map een array maken. Als je daar dan later in het script dan weer een lus voor maakt kan je meerdere mappen en meerde extensies uitlezen en weergeven.

download link: http://www.jb-web.org/downloads/scripts/php/phplinkmenu.zip

Grtz.

Voorbeeld: http://www.jb-web.net/scripts/php/phplinkmenu

Gesponsorde koppelingen

PHP script bestanden

  1. bestanden-met-gewenste-extensie-uit-map-gesorteerd

 

Er zijn 10 reacties op 'Bestanden met gewenste extensie uit map gesorteerd'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
PHP Newbie
PHP Newbie
21 jaar geleden
 
0 +1 -0 -1
en als ik nu een bestand info.php.mp3 upload?

Je kunt beter checken op MimeType, of anders kun je met de functie pathinfo() gemakkelijk de extensie achterhalen.
Bo az
Bo az
21 jaar geleden
 
0 +1 -0 -1
Ik ben hier toevallig van de week mee bezig geweest en de bedoeling van SPL is dat het op een Object geƶrienteerde manier gebruikt wordt.
Om dit dus goed te gebruiken zou je eigenlijk een eigen class moeten maken bijvoorbeeld:
myDirectoryIterator extends FilterIterator{
Vervolgens zou je dan alleen nog 1 foreach nodig hebben.
Joeri
Joeri
21 jaar geleden
 
0 +1 -0 -1
Ja dat is waar PHP Newbie geld niet voor bestanden met dubbele extensie.
En daar geef je zelf ook al de oplossing voor.

Ik gebruik dit momenteel enkel voor het weergeven van Afbeeldingen en Scripts uit een map waar meerdere extensies in staan. (heb dus momenteel geen nood aan het controleren op include files, want daar ligt toch meestal het gebruik van dubbele extensies he).

@Boaz: Bedankt voor de suggestie, ga het vermoedelijk aanpassen, al is het script dan misschien niet echt meer voor beginners??

@PHP Newbie: pathinfo(); toegevoegd.
PHP Newbie
PHP Newbie
21 jaar geleden
 
0 +1 -0 -1
Aangezien dit soort script's vaak gebruikt worden door nieuwe php'ers met slechte of geen kennis van beveiliging, lijkt het me een strak plan om even mijn commentaar van hierboven toe te passen.

Edit:

Script's, geen script :-p
Bo az
Bo az
21 jaar geleden
 
0 +1 -0 -1
@Joeri: nee, maar SPL is ook niet echt bedoeld voor beginners. Als een beginner die niet OOP programmeert zoiets wil kan die beter naar de functie glob() kijken.
Niek s
niek s
21 jaar geleden
 
0 +1 -0 -1
Fatal error: Uncaught exception 'Exception' with message 'DirectoryIterator::__construct() [function.--construct]: open_basedir restriction in effect. File(../../../../) is not within the allowed path(s): (/home/httpd/vhosts/jb-web.net/httpdocs:/tmp)' in /home/httpd/vhosts/jb-web.net/httpdocs/test/test14/index.php:6 Stack trace: #0 /home/httpd/vhosts/jb-web.net/httpdocs/test/test14/index.php(6): DirectoryIterator->__construct('../../../../') #1 {main} thrown in /home/httpd/vhosts/jb-web.net/httpdocs/test/test14/index.php on line 6

daar misschien nog ff beveilging op zetten?
Voor de rest, mooi scripptje :-)
Han eev
Han eev
21 jaar geleden
 
0 +1 -0 -1
Het kan nog eenvoudiger :)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?PHP
foreach(glob('rootpath/*.ext') as $filename) {
echo $filename."\n<br />";
}

?>

dus in het mapje rootpath alle bestanden met de extentie ext
glob
Joeri
Joeri
21 jaar geleden
 
0 +1 -0 -1
Quote:
Han schreef op 13.01.2007 21:24
Het kan nog eenvoudiger :)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?PHP
foreach(glob('rootpath/*.ext') as $filename) {
echo $filename."\n<br />";
}

?>


En als je dan de bestanden van een andere map wil weergeven en niet enkel die van de root?? Met het originele script kan je van eender welke map op je server de bestanden opladen in een array. Daarna kan je deze verwerken naar wens.
Leroy Boerefijn
Leroy Boerefijn
21 jaar geleden
 
0 +1 -0 -1
op jouw site gebeurde dit:
Quote:
Fatal error: Uncaught exception 'Exception' with message 'DirectoryIterator::__construct() [function.--construct]: open_basedir restriction in effect. File(/test/) is not within the allowed path(s): (/home/httpd/vhosts/jb-web.net/httpdocs:/tmp)' in /home/httpd/vhosts/jb-web.net/httpdocs/test/test14/index.php:6 Stack trace: #0 /home/httpd/vhosts/jb-web.net/httpdocs/test/test14/index.php(6): DirectoryIterator->__construct('/test/') #1 {main} thrown in /home/httpd/vhosts/jb-web.net/httpdocs/test/test14/index.php on line 6
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Joeri
Joeri
21 jaar geleden
 
0 +1 -0 -1
@leroy:
Quote:
DirectoryIterator->__construct('/test/') #1 {main} thrown in /home/httpd/vhosts/jb-web.net/httpdocs/test/test14/index.php on line 6
je hebt een niet bestaande map opgegeven /test/.

Ik heb enkel het princiepe vastgelegd, je moet een correcte map ingeven dat wil zeggen dat ../../test of ../test12 of indien het zou bestaan ../web_pages werkt maar op /test/ krijg je die error inderdaad als de map niet bestaat. Feel free om die error weg te werken door extra controles toe te voegen op het wel of niet bestaan van het opgegeven te controleren path.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. bestanden-met-gewenste-extensie-uit-map-gesorteerd

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.