php-dateibrowser is_dir()-fehlermeldung
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anzeigen
ausgabe
bau
browser
code
datei
desaster
einlesen
fehlermeldung
festlegen
file
http
not
oberen zeilen
ordner
pfad
post
url
wissen
zugreifen
-
Hallo.
Ich wollte "mal eben" einen file-browser auf meiner Homepage installieren (ohne die Möglichkeit irgendwas zu verändern).
Hab mir dazu 2 verschiedene Code-schnipsel geholt und bei beiden taucht irgendwie eine Fehlermeldung zu "is_dir" auf:
file-browser nr1:
http://simuliertes.lima-city.de/dateibrowser.php edit:nicht mehr aktuell, siehe mein nächster post
die Fehlermeldung: edit:nicht mehr aktuell, siehe mein nächster post
php schrieb:Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(..) is not within the allowed path(s): (/tmp:/var/tmp:/home/webpages/include/:/home/webpages/tmp:/home/webpages/lima-city/simuliertes/html) in /home/webpages/lima-city/simuliertes/html/dateibrowser.php on line 24
die codezeile: edit:nicht mehr aktuell, siehe mein nächster post
// Verzeichnis lesen $handle = openDir($dir); while ($file = readDir($handle)) { $directory[(int) is_dir($file)][] = $file; } closeDir($handle);
edit:Ab hier wird's wieder aktuell
file-browser nr2:
http://simuliertes.lima-city.de/dateibrowser2.php
php schrieb:
Warning: opendir(http://simuliertes.lima-city.de/) [function.opendir]: failed to open dir: not implemented in /home/webpages/lima-city/simuliertes/html/dateibrowser2.php on line 25
die Code-Zeile:
if($_GET['pfad'] == "") { $pfad = "http://simuliertes.lima-city.de/"; //$pfad = "file:///D:/programme/Allaire/HomeSite4/Spelling/Projects/baustelle/"; }else{ $pfad = $_GET['pfad'];} // letzte Ebene entfernen $ebene_hoch = substr($pfad, 0, strrpos($pfad, "/")); // aktuellen Pfad festlegen $ordnerpfad = $pfad.$ordner; // Ordnerinhalt einlesen $handle = opendir($ordnerpfad); // Inhalt einzeln abarbeiten while ($ordner = readdir ($handle)) {
file-browser nr2 jedenfalls funktioniert auf meinem rechner im xamp-server ausgezeichnet , ist also der Pfad Falsch? (und welcher ist der richtige?)
Beitrag zuletzt geändert: 28.2.2009 15:27:24 von simuliertes -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
zu 1:
ohne näheres darüber zu wissen, was in $dir drin steht (wäre gut zu wissen ) würde ich sagen, du versuchst auf einen anderen ordner als deinen userordner hier zuzugreifen.
edit: kann es sein, dass lima dich nicht auf den ordner '.' und '..' zugreifen lassen will? is mir grad beim betrachten deiner seite so in den sinn gekommen...
zu 2:
was steht bei dir im $_GET['pfad'] für ein wert drinnen? abgesehen davon finde ich auf die schnelle keinen fehler...
edit: bau die oberen zeilen mal so um, vlt bringts was (ungetestet):
if(!isset($_GET['pfad']) { $pfad = 'http://....' } else { //Prüfen ob der Wert in GET[pfad] gültig ist $pfad=$_GET['pfad']; }
Beitrag zuletzt geändert: 28.2.2009 14:45:05 von desaster-productions -
Also gut ich habe jetzt ersteinmal beschlossen nur mit nr 2 weiterzumachen und nr 1 fallen zu lassen.
desaster-productions schrieb:
zu 2:
[...]
edit: bau die oberen zeilen mal so um, vlt bringts was (ungetestet):
if(!isset($_GET['pfad']) { $pfad = 'http://....' } else { //Prüfen ob der Wert in GET[pfad] gültig ist $pfad=$_GET['pfad']; }
Du meintest so?
if(!isset($_GET['pfad'])) { // Wenn kein Pfad übermittelt, root anzeigen $pfad = "/home/webpages/lima-city/simuliertes/html"; } else { $pfad=$_GET['pfad']; }
Ich gebe mal den ganzen Code von 2 raus (mit aktuellen änderungen):
Edit: http://rafb.net/p/PsN5fQ95.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title></title> <meta name="generator" content="Webweaver v1.6.7 [http://webweaver.ws]" /> </head> <body> <? // Pfadangabe gegen externe Eingaben sichern $pfad = str_replace("../", "", $_GET['pfad']); if(!isset($_GET['pfad'])) { // Wenn kein Pfad übermittelt, root anzeigen $pfad = "/home/webpages/lima-city/simuliertes/html"; } else { $pfad=$_GET['pfad']; } echo $pfad."<br>"; // letzte Ebene entfernen $ebene_hoch = substr($pfad, 0, strrpos($pfad, "/")); // aktuellen Pfad festlegen $ordnerpfad = $pfad.$ordner; // Ordnerinhalt einlesen $handle = opendir($ordnerpfad); // Inhalt einzeln abarbeiten while ($ordner = readdir ($handle)) { // Link Pfad zum nächsten Ordner erstellen $neuerpfad = $pfad."/".$ordner; echo "DEBUG:der Pfad der gerade geprüft wird: ".$neuerpfad."<br>"; // Wenn es sich um einen Ordner handelt if(is_dir($neuerpfad)) { if($ordner != "." && $ordner != "..") { // Ordner mit einem icon versehen un der Ordnerliste hinzufügen $ordnerliste .= 'Ordner: <a href="dateibrowser3.php?pfad='.$neuerpfad.'"><b>'.$ordner.'</b></a><br />'; } } // Wenn es sich nicht um einen Ordner handelt else { // Wenn es sich um eine Bilddatei handelt… if(substr($ordner, strrpos($ordner, ".")) == ".jpg" or substr($ordner, strrpos($ordner, ".")) == ".jpeg" or substr($ordner, strrpos($ordner, ".")) == ".gif" or substr($ordner, strrpos($ordner, ".")) == ".png") { // …wird der entsprechende Link erstellt $images .= 'BILD: <a href="'.$pfad.'/'.$ordner.'">'.$ordner.'</a><br />'; } // Wenn es sich um eine .xml Datei handelt… elseif(substr($ordner, strrpos($ordner, ".")) == ".xml") { // …wird der entsprechende Link erstellt $xmls .= 'XML: <a href="'.$pfad.'/'.$ordner.'">'.$ordner.'</a><br />'; }else{ // Alle anderen Dateien $sonstige .= 'sonstige: <a href="'.$pfad.'/'.$ordner.'">'.$ordner.'</a><br />'; } } } // Ende der While Schleife // Ausgabe der Navigation echo '<div>aktueller Pfad: '.$ordnerpfad.'</div> <!-- <a href="dateibrowser3.php?pfad=."><b>-> zum Startverzeichnis</b></a><br /> --> <a href="dateibrowser3.php?pfad=.."><b>–> ...</b></a><br /><br />'; // Ausgabe der Listen echo '<div><b>Ordner</b></div>'.$ordnerliste.'<br /> <div><b>XML-Dateien</b></div>'.$xmls.'<br /> <div><b>Bild-Dateien</b></div>'.$images.'<br /> <div><b>restl-Dateien</b></div>'.$sonstige.'<br /> '; ?> </body> </html>
neue URL mit diesen Code:
http://simuliertes.lima-city.de/dateibrowser3.php
1. also anscheinend hat er probleme mit dieser url: "/home/webpages/lima-city/simuliertes/html/."
2. was zur hölle ist denn eig. mein root-verzeichniss? http://simuliertes.lima-city.de ist es jedenfalls nicht oder?
3.geh mal auf den Ordner "Travian" , plötzlich ist alles gut
aber wenn ich wieder zurück will kommen gleich 3 fehlermeldungen (auf "..." klicken)
Beitrag zuletzt geändert: 28.2.2009 15:33:49 von simuliertes -
so meinte ich :)
also ich geh jetz vom dateibrowser3 aus:
der mag es nicht, wenn du auf den ordner '..' zugreifen willst, wahrscheinlich, weil der schon nicht mehr dir gehört ;)
prüfe den aktuellen ordner, ob der nicht '..' ist, und dann das ganze mit is_dir...
also 1) falsch, nur den "unterordner" .. nicht, der der übergeordnete ordner ist
zu 2) ich geh mal davon aus, dass es html ist
und 3) kA soviel zum denken, schließ erst mal 1 aus und check das dann nochmal *g*
Beitrag zuletzt geändert: 28.2.2009 21:11:48 von desaster-productions -
desaster-productions schrieb:
also 1) falsch, nur den "unterordner" .. nicht, der der übergeordnete ordner ist
zu 2) ich geh mal davon aus, dass es html ist
und 3) kA soviel zum denken, schließ erst mal 1 aus und check das dann nochmal *g*
juhhuu ich konnte es fixen
Thnks des-pro, jetzt funktioniert es
if($ordner!="..")$neuerpfad = $pfad."/".$ordner;
und dann noch im "zurück"-link aus
http://simuliertes.lima-city.de/dateibrowser4.php?pfad=..
einen punkt weggenommen
http://simuliertes.lima-city.de/dateibrowser4.php?pfad=.
Alles klar also thnks für die Hilfe
(verstehen und Sicherheitslücken schließen kommt später )
Beitrag zuletzt geändert: 28.2.2009 16:34:48 von simuliertes -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage