Raggazzi: Ordner unter localhost auflisten, als zwei Links darstellen!

Hallo zusammen,

ich versuche schon den ganzen abend etwas in php erstellen. Leider bin ich Anfänger und habe nur wenig bis keine Ahnung von PHP!

ich habe local Xampp und zwei Homepage in joomla die unter htdocs liegen. Nun möchte ich gerne wie ich es hier veranschaulicht habe http://www.bilder-space.de/show.php?file=je5tLc3f9e9Dkw2.jpg mein Localhost ändern.

Ich möchte die Ordner von htdocs auslesen und als Link in meiner Xamppstartseite als Link anzeigen. Dazu möchte ich auch noch das ich gleich noch den Administratorenlink aufgelistet wird!

Die Startseite von localhost ist im Ordner (ganzer Pfad --> E:/Xampp/htdocs/xampp/start.php) und die Ordner die ich auslesen möchte sind im Ordner (ganzer Pfad --> E./xampp/htdocs/Homepage)

Folgedes Skript habe ich gefunden:
<?php
  error_reporting (E_ERROR);

class vollpfosten_exception extends exception {}
  class daten_exception extends exception {}

class Dir
  {
    private $filetype = array ();
    private $root;
    private $deny = array ();
    private $files = array ();

// Festlegen des Startverzeichnisses
    public function setRoot ($var)
    {
      if (is_dir ($var))
      {
        $this -> root = $var;
      }
      else
      {
        // Ordner nicht vorhanden
        throw new vollpfosten_exception ('Troll! Den Ordner '.$var.' gibt es nicht!.');
      }
    }

// Festlegen der verbotenenen Ordner
    public function denyFolder (array $var)
    {
      $this -> deny = $var;
    }

// Festlegen der erlaubten Dateitypen
    public function setFiletype (array $var)
    {
      $this -> filetype = $var;
    }

// Suche starten, gibt im Erfolgsfall $files als Array zurück
    public function startSearch ()
    {
      $this -> doNavigate();
      if ($this -> files)
      {
        return $this -> files;
      }
      else
      {
        // Keine entsprechenden Dateien vorhanden
        throw new daten_exception ('Es sind keine Daten vorhanden', 0);
      }
    }

// rekursive Methode zum Durchlaufen aller Ordner und Dateien
    private function doNavigate ()
    {
      // "temporäres Array zum späteren sortieren
      $sort = array ();

// Wenn Verzeichnis vorhanden
      if ($handle = opendir ($this -> root))
      {
        // Ordern und Dateien im "temopäres" Array $sort einlesen
        while ($found = readdir ($handle))
        {
          if ($found != '.' && $found != '..')
          {
            $sort[] = $this -> root.'/'.$found;
          }
        }

// Überprüfung auf Inhalte
        if (sizeof ($sort) > 0)
        {
          // alphabetisch sortieren
          natcasesort($sort);
         // Array in Schleife durchlaufen
          foreach ($sort as $var)
          {
            // Wenn Ordner
            if (is_dir ($var))
            {
              // aktuelles Verzeichnis festlegen
              $this -> setFolder ($var);
              // Rekursion, Methode ruft sich selber noch einmal auf
              $this -> doNavigate();
            }
            // Wenn Datei
            else if (is_file($var))
            {
              // Methode zum Schreiben der Informationen aufrufen
              $this -> setFile ($var);
            }
          }
        }
        // Verzeichnis schließen
        closedir($handle);
      }
      else
      {
        // Keine Leserechte
        throw new vollpfosten_exception ('Keine Zugriffsrechte auf '.$this -> root);
      }
    }

// Methode, um aktuelles Verzeichnis anzupassen
    private function setFolder ($folder)
    {
      // wenn Ordner erlaubt
      if (!$this -> checkFolder($folder))
      {
        // aktuelles Verzeichnis setzen
        $this -> root = $folder;
      }
    }

// Methode zur Überprüfung der erlaubten Ordner
    private function checkFolder ($folder)
    {
      //Schleife zur Überprüfung aller verbotenen Ordner
      foreach ($this -> deny as $forbidden)
      {
        // Pfad in Einzelordner zerlegen
        $tmp = explode ('/', $folder);
        // Überprüfung des letzten Ordners
        if ($tmp[count($tmp) -1] == $forbidden)
        {
          // wenn verboten, true zurückgeben und abbrechen
          return true;
          break;
        }
      }
    }

// Methode zur Erfassung der gewünschten Inhalte
    private function setFile ($file)
    {
      // Datei wird auf korrekten Typ hin überprüft
      if ($this -> checkFiletype($file))
      {
        // Dateigröße
        $filesize = filesize ($file);
        // letze Änderung
        $filetime = filemtime ($file);
        // Position des letzen "/"
        $mark = strrpos ($file, "/");
        // Pfad ohne Datei
        $path = substr ($file, 0, $mark);
        // Dateinamen ohne Pfadangabe
        $file = substr ($file, $mark + 1);
        // Infos in $files schreiben
        $this -> files[] = array (
                                  'path' => $path,
                                  'file' => $file,
                                  'size' => $filesize,
                                  'time' => $filetime
                                 );
      }
    }

// Methode zur Überprüfung der gewünschten Dateitypen
    private function checkFiletype ($file)
    {
      //Schleife zur Überprüfung aller erlaubten Dateien
      foreach ($this -> filetype as $valid)
      {
        // wenn Dateiendung paßt, true zurückgeben und abbrechen
        if (substr ($file, -4) == $valid)
        {
          return true;
          break;
        }
      }
    }
  }

// Definition aller benötigten Parameter
  $filetype = array ('.htm','.php');
  $folder = array ('bla','blubb');
  $root = $_SERVER['DOCUMENT_ROOT'].'/ordner';

// Objekt vom Typ $dir erzeugen
  $dir = new Dir;
  // Startverzeichnis festlegen
  try
  {
    $dir -> setRoot ($root);
  }
  catch (vollpfosten_exception $exception)
  {
    echo 'Du hast leider, leider einen Ordner ausgewählt, der nicht existiert. Probier es noch einmal';
    $fault = 1;
  }
  if (!$fault)
  {
    // Erlaubte Ordner festlegen
    $dir -> denyFolder ($folder);
    // Erlaubte Dateitypen fetslegen
    $dir -> setFiletype ($filetype);
    // Suche beginnen
    try
    {
      $result = $dir -> startSearch();
      // Ergebnis ausgeben
      print_r($result);
    }
    catch (daten_exception $exception)
    {
      echo 'Code: '.$exception -> getCode().'<br>';
      echo 'Fehler: '.$exception -> getMessage().'<br>';
      echo 'Datei: '.$exception -> getFile().'<br>';
      echo 'Zeile: '.$exception -> getLine().'<br>';
      echo 'bla';
    }
  }

?>
---------------------------------------------------------------------------

Und dies auch noch:

<table width="600" border="1" >
  <caption>
<span class="Stil1">    Domainverwaltung<br>
</span>    <br>
  </caption>
  <tr>
    <th width="300" height="30" scope="col">Domain - Namen</th>
    <th width="300" scope="col">Domain Administrator</th>
  </tr>
  <tr class="Stil2">
    <td><div align="center" class="Stil2">

<div align="center">
          <?php

$pfad = "../"; // Pfad zum Ordner .. mit "/" hinten dran
$e = "0";

$verzeichnis = dir($pfad);
while($datei = $verzeichnis->read())
{
if ($datei == ".") { continue; }
if ($datei == "..") { continue; }

$e++;
$h[$e] = $datei;

$suchen = stristr($h[$e],"./"); //
if($suchen)
{
echo "";
}
else
{
?>
          <a href="<? echo $pfad.$h[$e]; ?>"><? echo $h[$e]; ?></a><br>
          <?
}
}
$verzeichnis->close();
?>
        </div>
    </div></td>
    <td><div align="center"><span class="Stil2"><span class="Stil4"></span></span></div></td>
  </tr>
</table>

Welches würdet Ihr nehmen und wie muss ich es ändern?!

Ich hoffe es kann mir jemand folgen!?

Danke und Gruss Raggazzi

  1. Hi,

    wenn ich dich richtig verstanden hab, dann solltest du dir mal die navi.php Datei ansehen...

    bye trunx

    --
    Die Standard-Antwort: "Bitte benutze die Forum-Suche!" macht die Forum-Suche kaputt, weil die Suche dann nämlich genau vor allem diese dämliche Standard-Antwort, also Müll liefert. Sinnvoller ist stattdessen folgende Standard-Antwort: "Dieses Thema wurde schon vielfach im Forum besprochen, siehe z.B. <a>hier</a> oder <a>hier</a> oder benutze die Forum-Suche z.B. mit den Stichworten 'Stichwort1 Stichwort2'." Danke.
    1. Hallo,

      ich habe jetzt mein PHP so!

      <?php

      $pfad = "../"; // Pfad zum Ordner .. mit "/" hinten dran
      $e = "0";

      $verzeichnis = dir($pfad);
      while($datei = $verzeichnis->read())
      {
      if(in_array($datei, Array(
         '.', '..',
         'contrib', 'forbidden', 'restricted', 'xampp', 'apache_pb.gif', 'apache_pb.png', 'apache_pb2.gif','apache_pb2.png',   'apache_pb2_ani.gif','favicon.ico','index.html', 'index.php', 'Thumbs.db', 'www', 'xampp',
         // usw. ...
      ))) continue;

      $e++;
      $h[$e] = $datei;

      $suchen = stristr($h[$e],"./"); // Der Ordner wird in diesem Bsp. nach Dateien mit der Endung .zip durchsucht
      if($suchen){
      echo "";}
      else{
      ?>
      <a href="<? echo $pfad.$h[$e]; ?>" target=_blank><? echo $h[$e]; ?></a><br><br>
      <?
      }}
      $verzeichnis->close();
      ?>

      mein Problem ist jetzt noch, dass es mir den Domain-Ordner anzeigt! Es sollte mir aber den Administrator Ordner als Link wiedergeben! Nicht aber den Anzeigenamen!

      Start.php
      --> E:/xampp/htdocs/xampp/start.php

      Domain-Ordner mit einer index.php darin
      --> E:/xampp/htdocs/Domain1

      Administrator-Ordner mit einer index.php darin
      --> E:/xampp/htdocs/domain1/administrator

      Was muss ich noch ändern?

      Danke für Eure Hilfe!

      Gruss Raggazzi