PDA

Bekijk Volledige Versie : PHP: dir inlezen



Gina
05/04/06, 03:40
Hallo,

onderstaand PHP-scriptje gebruik ik om de
bestanden in de dir 'upload' te laten inlezen
en er links van te maken

het werkt naar behoren, maar ...

het laat alle bestanden (php, txt, htm, ...) zien
en de bedoeling is om enkel de PHP-bestanden
in die dir 'upload' te laten zien als een link

wat moet er aan het scriptje toegevoegd worden
zodat enkel alle PHP-bestanden in die dir
in de lijst voorkomen ?
(met uitzondering van het bestand zelf
en dit bestandje noemt index.php)

<knip html-code>
<?php
$handle=opendir('../upload');
while (false !== ($file = readdir($handle))){
if(($file == ".") OR ($file == "..")){continue;}
echo '<a href="/upload/'.$file.'">'.$file.'</a>';
}
closedir($handle);
?>
<knip html-code>

veel dank op voorhand

Gina

Branko Collin
05/04/06, 11:40
On Wed, 05 Apr 2006 01:03:25 GMT, "Gina" <99999@telenetSPAM.be> wrote:

>wat moet er aan het scriptje toegevoegd worden
>zodat enkel alle PHP-bestanden in die dir
>in de lijst voorkomen ?
>(met uitzondering van het bestand zelf
>en dit bestandje noemt index.php)
>
><knip html-code>
><?php
>$handle=opendir('../upload');
>while (false !== ($file = readdir($handle))){
> if(($file == ".") OR ($file == "..")){continue;}
> echo '<a href="/upload/'.$file.'">'.$file.'</a>';
>}
>closedir($handle);
>?>
><knip html-code>

Om te beginnen zul je moeten weten wat je verstaat onder een
PHP-bestand. Het makkelijkst is als je genoegen neemt met die
bestanden waarvan de bestandsnaamextensie met "php" begint, want daar
is het makkelijkst op te testen.

if(($file == ".") OR ($file == "..")){continue;}

wordt dan bijvoorbeeld

if(($file == ".") OR ($file == "..") OR
(preg_match('/\.php[^.]*$/',$file) !== false)){continue;}

(Da's één regel, maar mijn newsclient breekt hem af; wijziging niet
gestest.)

De regex is uit mijn hoofd, en zou iets moeten betekenen als:

\. een punt
php gevolgd door PHP
[^.]* gevolgd door nul of meer andere tekens, zo lang het maar geen
punten zijn
$ aan het einde van de bestandsnaam

Gina
05/04/06, 19:40
| >wat moet er aan het scriptje toegevoegd worden
| >zodat enkel alle PHP-bestanden in die dir
| >in de lijst voorkomen ?
| >(met uitzondering van het bestand zelf
| >en dit bestandje noemt index.php)
| >
| ><knip html-code>
| ><?php
| >$handle=opendir('../upload');
| >while (false !== ($file = readdir($handle))){
| > if(($file == ".") OR ($file == "..")){continue;}
| > echo '<a href="/upload/'.$file.'">'.$file.'</a>';
| >}
| >closedir($handle);
| >?>
| ><knip html-code>


| Om te beginnen zul je moeten weten wat je verstaat onder een
| PHP-bestand. Het makkelijkst is als je genoegen neemt met die
| bestanden waarvan de bestandsnaamextensie met "php" begint, want daar
| is het makkelijkst op te testen.
|
| if(($file == ".") OR ($file == "..")){continue;}
|
| wordt dan bijvoorbeeld
|
| if(($file == ".") OR ($file == "..") OR
| (preg_match('/\.php[^.]*$/',$file) !== false)){continue;}
|
| (Da's één regel, maar mijn newsclient breekt hem af; wijziging niet
| gestest.)
|
| De regex is uit mijn hoofd, en zou iets moeten betekenen als:
|
| \. een punt
| php gevolgd door PHP
| [^.]* gevolgd door nul of meer andere tekens, zo lang het maar geen
| punten zijn
| $ aan het einde van de bestandsnaam


ja, dat bedoelde ik:
de bestanden met de extentie PHP

enkel die zouden zichtbaar moeten zijn
maar met uitzondering van index.php

nu, met het script dat ik reeds gebruik,
zijn ook de bestanden met de extentie htm, txt, ... enz zichtbaar

ik heb uw aanpassing geprobeerd en ...
dan is er niets meer zichtbaar

gina

Nico Schuyt
05/04/06, 21:40
Gina wrote:
> wat moet er aan het scriptje toegevoegd worden
> zodat enkel alle PHP-bestanden in die dir
> in de lijst voorkomen ?
> (met uitzondering van het bestand zelf
> en dit bestandje noemt index.php)

<?php
$handle=opendir('../upload');
while (false !== ($file = readdir($handle))){
if(($file == ".") OR ($file == "..") OR !strpos($file,'.php')){continue;}
echo '<a href="upload'.$file.'">'.$file.'</a>';
}
closedir($handle);
?>

--
Nico Schuyt
http://www.nicoschuyt.nl/

Gina
05/04/06, 22:20
| > wat moet er aan het scriptje toegevoegd worden
| > zodat enkel alle PHP-bestanden in die dir
| > in de lijst voorkomen ?
| > (met uitzondering van het bestand zelf
| > en dit bestandje noemt index.php)


| if(($file == ".") OR ($file == "..") OR !strpos($file,'.php')){continue;}


dit doet het
ik heb er nog wat aan toegevoegd
namelijk het verbergen van index.php

if(($file == ".") OR ($file == "..") OR ($file == 'index.php') OR
!strpos($file,'.php')){continue;}

ik zie nu enkel alle php-bestanden
met uitzondering van index.php

nico, hartelijk dank om mij op de goede weg te zetten
gina

Branko Collin
05/04/06, 23:00
On Wed, 05 Apr 2006 17:02:22 GMT, "Gina" <99999@telenetSPAM.be> wrote:

>ik heb uw aanpassing geprobeerd en ...
>dan is er niets meer zichtbaar

Sorry, ik had de vraag verkeerd gelezen. Mijn wijziging liet juist de
..php-bestanden niet zien.