ugrás a tartalomhoz

php5 is_dir() néha téved

Arnold Layne · 2008. Feb. 15. (P), 21.24
Sziasztok!

Nagyjából egy hete akadtam bele abba a problémába, hogyha nem azt a mappát listázom, amiben a szkriptem is van, akkor nem "ismeri fel" az abban lévő mappákat (fájlnak nézi).
Már feltúrtam a fél internetet, de nem találtam semmit amivel előrébb juthattam volna.

A kód:

<?php
header("Content-type: text/plain; charset=utf8");

$af = "./".$_GET['dir'];
$dir = opendir($af);
$cv = 0;

while(($file = readdir($dir)) !== false)
 {

  if($file != "." && $file != "..")
   {
    if(is_dir($file))
     {
      $nevek[$cv]['name'] = $file;
      $nevek[$cv]['type'] = "DIR ";
      $nevek[$cv]['size'] = "----";
      $cv++;
     }
    else
     {
      $nevek[$cv]['name'] = $file;
      $nevek[$cv]['type'] = "FILE";
      $nevek[$cv]['size'] = filesize($af.$file);
      $cv++;
     }
   }
 }
closedir($dir);
print_r($nevek);

?>
 
1

off

gex · 2008. Feb. 15. (P), 21.44
nincs ötletem a problémával kapcsolatban, de szemet szúrt: szkripted.php?dir=../../-t próbáltad már? ;)
2

igen, próbáltam, de...

Arnold Layne · 2008. Feb. 15. (P), 22.11
...előbb ezt a problémát akartam megoldani, aztán foglalkozni az általad említett és ahhoz hasonló trükkök kivédésével.
3

Nem abszolút út

Rici · 2008. Feb. 16. (Szo), 01.10
Elég egyértelmű a dolog, a readdir az adott könyvtáron belüli következő fájlnak csak a nevét adja vissza, nem a teljes elérési útját.

Az is_dir pedig mivel nem teljes elérési utat kap, ezért mindig az aktuális könyvtárban vizsgálja, hogy létezik-e adott nevű könyvtár. Ha innen nem látod, hogy mi a hiba, majd leírom később, csak most más dolgom is van. :)