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:
  1. <?php  
  2. header("Content-type: text/plain; charset=utf8");  
  3.   
  4. $af = "./".$_GET['dir'];  
  5. $dir = opendir($af);  
  6. $cv = 0;  
  7.   
  8. while(($file = readdir($dir)) !== false)  
  9.  {  
  10.   
  11.   if($file != "." && $file != "..")  
  12.    {  
  13.     if(is_dir($file))  
  14.      {  
  15.       $nevek[$cv]['name'] = $file;  
  16.       $nevek[$cv]['type'] = "DIR ";  
  17.       $nevek[$cv]['size'] = "----";  
  18.       $cv++;  
  19.      }  
  20.     else  
  21.      {  
  22.       $nevek[$cv]['name'] = $file;  
  23.       $nevek[$cv]['type'] = "FILE";  
  24.       $nevek[$cv]['size'] = filesize($af.$file);  
  25.       $cv++;  
  26.      }  
  27.    }  
  28.  }  
  29. closedir($dir);  
  30. print_r($nevek);  
  31.   
  32. ?>  
 
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. :)