[php] is_dir probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • spider
  • Registratie: Juli 2001
  • Laatst online: 31-12-2023
Ben hier al een paar uur mee bezig, en na vele searches op php.net en deze site natuurlijk wil ik jullie hulp vragen. Onderstaande script draai ik op iis (winxp) met de laatste php engine. Op de een of andere manier wil het gewoon niet werken. Ik heb diverse andere script geprobeerd, die moesten werken maar helaas. Ik wil namelijk een directory listing hebben, van alleen dirs. Dus de files kunnen overboard. Ik vermoed een winxp probleem, die een directory anders weergeeft.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[code]
<?php
if ($dir = @opendir("/test"))
    {
    while (($file = readdir($dir)) !== false)
        {
        if (is_dir($file))
            {
            echo "is een directory, namelijk:$file<br>\n";
            }
        else
            {
            echo "is een file, namelijk :$file<br>\n";
            }
        }  
    closedir($dir);
    }
?>
[/code]

"Is your mother proud of you ?"


Acties:
  • 0 Henk 'm!

  • pthn
  • Registratie: Februari 2003
  • Laatst online: 31-07-2023
Heb je de @ voor opendir al eens weggelaten en gekeken wat de waarde van $dir is ?

Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

• Wat werkt er niet?
• Welke foutmeldingen krijg je? (haal de '@' weg en zet error_reporting(E_ALL) bovenaan je script)
• Wat heb je al geprobeerd
:?

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

Verwijderd

je doet while($file = readdir($dir) waardoor $file gecontroleerd wordt op 'true' zijn. Daar hoeft dus niet ook nog eens "!== false" achter te staan

Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

Verwijderd schreef op 25 maart 2003 @ 00:17:
je doet while($file = readdir($dir) waardoor $file gecontroleerd wordt op 'true' zijn. Daar hoeft dus niet ook nog eens "!== false" achter te staan
Toch wel...
Let erop op welke manier de return value van dir() wordt gecontroleerd. Je moet expliciet testen of de return value identiek is aan (gelijk is en van hetzelfde type is -- zie Vergelijkings operators voor meer informatie) FALSE omdat anders een directory entry dat evalueert als FALSE de loop zal stoppen (b.v. door een directory genaamd "0").
Bron: readdir()

[ Voor 5% gewijzigd door thomaske op 25-03-2003 00:23 ]

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

  • spider
  • Registratie: Juli 2001
  • Laatst online: 31-12-2023
Wat er fout gaat (ja is wel handig om te vertellen) Het script loopt goed door, geen fout meldingen daar. Hij geeft alles enkel neer als files. Behalve de . en .., die worden aan geduidt als directorys. Tevens kan ik je melden dat de loop volledig wordt doorlopen, tot de laatste file of directory. Dus daar zit ook geen fouten.

@ weghalen is geen oplossing

[ Voor 5% gewijzigd door spider op 25-03-2003 09:10 . Reden: spelling ]

"Is your mother proud of you ?"


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Tsja, 't is ook gek om te denken dat PHP zomaar aan de hand van de naam van het bestand kan bedenken of het een dir of een file betreft ...

PHP doet dat via 't filesysteem, dus je moet ook expliciet de directory er bij opgeven:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php 
$directory_name = '/test';
if ($dir = opendir($directory_name )) { 
   while (($file_name = readdir($dir)) !== false) { 
      $rel_file = $directory_name . '/' . $file_name; // <---
      if (is_dir($rel_file)) { 
         echo "is een directory, namelijk: $file_name<br>\n"; 
      } else { 
         echo "is een file, namelijk : $file_name<br>\n"; 
      } 
   }   
   closedir($dir); 
}?> 

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 15-09 16:19

alienfruit

the alien you never expected

Ik zal ook even kijken of het niet een is_link() is want dat kan soms leuke problemen veroorzaken! Infinite loops e.d.
Pagina: 1