Ordner unter localhost auflisten, als zwei Links darstellen!
Raggazzi
- php
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
Hi,
wenn ich dich richtig verstanden hab, dann solltest du dir mal die navi.php Datei ansehen...
bye trunx
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