U bevindt zich hier: Forum » Tutorials » [PHP] Directory uitlezen
   Actief Topic: [PHP] Directory uitlezen

Vorige ( 1 ) Volgende

sebastiaan
member
avatar
# Gepost op 13-09-2010 13:43


In deze tutorial leer ik je hoe je een PHP functie kan schrijven die een map uitleest en de bestanden die erin staan terug geeft. Je kunt hiermee makkelijk aangeven wat je wel en niet wilt laten zien.

Stap een
Maak een nieuw PHP bestand aan met de PHP open en PHP sluiten tags.
Maak in dit bestand een nieuwe functie genaamd directorylisting:
Plain | Plain new window | PHP code:
  1.  
  2. <?php
  3. function directorylisting($dir, $dontshow=array())
  4. {
  5.  
  6. }
  7. ?>
  8.  


Even wat uitleg: De variabele dir word gebruikt om aan te geven welke map uitgelezen moet worden. De variabele dontshow gebruik je om aan te geven welke bestanden en/of mappen je niet wilt laten weergeven.

Stap twee
Goed. Gaan we nu weer verder. Een functie doet natuurlijk weinig als je er niks inzet. Ik ga beginnen met de code om bestanden en mappen te negeren. Pas de functie aan tot het overeen komt met wat hieronder staat:

Plain | Plain new window | PHP code:
  1.  
  2. <?php
  3. function directorylisting($dir, $dontshow=array())
  4. {
  5.    $ignore = array('.', '..'); // Negeer deze twee dingen (deze map en één map hoger)
  6. }
  7. ?>
  8.  


Huh? De variabele om iets niet te tonen was toch 'dontshow'? Ja, dat klopt. Dontshow voegt zijn items toe aan de ignore variabele! Je hoeft dus niet perse $dontshow in te vullen als je alleen de huidige map en een map hoger wilt verbergen. Slim he?

Maar goed, je moet $dontshow dus wel koppelen aan $ignore. Dat ziet er zo uit:

Plain | Plain new window | PHP code:
  1.  
  2. <?php
  3. function directorylisting($dir, $dontshow=array())
  4. {
  5.     $ignore = array('.', '..');
  6.  
  7.     if(count($dontshow) > 0)
  8.     {
  9.         foreach($dontshow as $dontshowfile)
  10.         {
  11.             $ignore[] = $dontshowfile;
  12.         }
  13.     }
  14. }
  15. ?>
  16.  


Stap drie
Nu gaan we daadwerkelijk een map uitlezen. Dit script heb ik bijna letterlijk van php.net/readdir overgenomen dus als je meer wilt weten daarover: php.net readdir

Pas de code aan tot je dit hebt:
Plain | Plain new window | PHP code:
  1.  
  2. <?php
  3. function directorylisting($dir, $dontshow=array())
  4. {
  5.     $ignore = array('.', '..');
  6.  
  7.     if(count($dontshow) > 0)
  8.     {
  9.         foreach($dontshow as $dontshowfile)
  10.         {
  11.             $ignore[] = $dontshowfile;
  12.         }
  13.     }
  14.  
  15.     if($handle = opendir($dir))
  16.     {
  17.         while(false !== ($file = readdir($handle)))
  18.         {
  19.             if(!in_array($file, $ignore) && !is_file($file))
  20.             {
  21.                print '<li><a href=" '.$file.' ">'.$file.'</a></li>';
  22.             }
  23.         }
  24.     }
  25. }
  26. ?>
  27.  


Dat was het! Een voorbeeld om deze functie te gebruiken:
Plain | Plain new window | PHP code:
  1.  
  2. <ul>
  3.     <?php directorylisting('/cms/', array('CSS', 'JS')); // Dit toont alles in de map CMS, met uitzondering van de mappen CSS en JS
  4. </ul>
  5.  

Mijn software heeft geen bugs. Het ontwikkelt gewoon ongedocumenteerde functies.

Vorige ( 1 ) Volgende

U moet aangemeld zijn om een reactie te kunnen plaatsen.

Indien u nog geen account heeft kunt u zich hier registreren.



© copyright 2009/2010 WebProjects 1.02 - Template van Sebastaan Franken