Dateibrowser mit macken

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Dateibrowser mit macken

    Hallo Loits.

    Ich baue gerade mal wieder an nem Script und stehe kurz vor dem Wahnsinn.......

    gestern wurde folgender Thread aufgemacht.....
    http://www.php-resource.de/forum/sho...threadid=38145
    Da kam mir plötzlich die Idee, das so zu bauen, das man durch die Verzeichnisse düsen kann, die modes anzeigen lassen kann und wenn das Script mal fertig ist, die Modes mittels chmod() ändern kann.

    Das düsen durch die verzeichnisse habe ich hinbekommen, das ändern der modes bekomme ich auch noch hin. (siehe Thread oben)

    Allerdings brauche ich nun fogenden Denkanstoß:

    Wenn Ihr Euch das Script unten mal anschaut, kommt man leicht auf die Idee, das Teil z.B. wie folgt aufzurufen...

    browser.php?ordner[1]=../../

    und schwups, befindet sich man im root des Servers.
    Wie kann ich verhindern, das ein Verzeichnis oberhalb des scriptes aufgerufen wird?
    Wie würdet Ihr das lösen ?

    PHP-Code:
    <a href="?">/</a>
    <?php
    $countordner 
    =count($ordner);
    if (!
    $path){$path=getcwd();};
    for (
    $i=1;$i<=$countordner;$i++) 
    {
    if (
    $updir<>"true") {$backordner=$backordner."/".$ordner[$i];}
    $chordner=$chordner."/".$ordner[$i];
    $urlordner=$urlordner."&ordner[".$i."]=".$ordner[$i];
    ?>
    &nbsp;<a href="?backordner=<?php echo $backordner;?><?php echo $urlordner;?>&updir=true"><?php echo $ordner[$i];?></a>
    <?php

    };
    ?>
    <hr>
    <?php
    if ($backordner and $updir<>"true") {$path=getcwd().$backordner;} else {$path=$path.$chordner."/";};

    chdir($path);
    $hook opendir($path);
        while ((
    $file readdir($hook)) !== false)
            {
                if (
    $file != "." && $file != "..")
                {
                    if (
    is_dir($file))
                    {
    ?>
                    <br>
                    <a href="?ordner[<?php echo ($countordner+1);?>]=<?php echo $file;?><?php echo $urlordner;?>"><?php echo $file;?></a><?php }
                else
                    {
                    }
                }
            }
    closedir($hook);
    ?>
    <hr>
    <table width="100%"  border="0">
     <tr>
      <td>Filename</td>
      <td>Mode</td>
      <td>Size</td>
     </tr>
    <?php
    $hook 
    opendir($path);
        while ((
    $file readdir($hook)) !== false)
            {
                if (
    $file != "." && $file != "..")
                {
                    if (
    is_dir($file))
                    {}
                else
                    {
                    
    ?>
     <tr>
      <td><a href="<?php echo $backordner."/".$file;?>" target="_blank"><?php echo $file;?></a></td>
      <td><?php echo decoct(fileperms($file));?></td>
      <td><?php echo filesize($file);?></td>
     </tr>
    <?php 
                    
    }
                }
            }
    closedir($hook);
    ?>
    </table>

  • #2
    getcwd()

    Kommentar


    • #3
      jau, hab ich ja,
      getcwd ist der scriptpath. Den kombinier ich mit den angegebenen ordnern

      Aber opendir erlaubt wohl auch relative pfade:

      Wenn getcwd also /www/blahblah/root zurückgibt und das mit dem Ordner /../../ kombiniert wird, dann führt er das aus .
      Also vom /www/blahblah/root/../../ <- 2 ebenen höher als das script.....

      Kommentar


      • #4
        und wenn du mit dem Return Value von getcwd() arbeitest?
        [color=blue]MfG Payne_of_Death[/color]

        [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
        [color=red]Merke:[/color]
        [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

        Murphy`s Importanst LAWS
        Jede Lösung bringt nur neue Probleme
        Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
        In jedem kleinen Problem steckt ein großes, das gern raus moechte.

        Kommentar


        • #5
          getcwd() ist schon die richtige variante, danke für den denkanstoss.

          ich mache nun folgendes:

          PHP-Code:
          // Überprüfung ob das Script mit falschen werten aufgerufen wird
          $mustbepath=explode("/",getcwd()); // Array des Scriptpfades
          @chdir($path);
          $callpath=explode("/",getcwd()); // Array des aufgerufenen Pfades

          for ($i=0;$i <= count($mustbepath)-1;$i++) 
          {
          if (
          $callpath[$i] <> $mustbepath[$i]) {die("ungültige Pfadangabe");};
          }; 
          Das funzt schon ganz gut.

          Das bisherige Script könnt Ihr Euch mal anschauen:

          Quelltext
          Script

          Kommentar

          Lädt...
          X