Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Durch Verzeichnisse navigieren funktioniert nicht richtig





Frage

Wie schon erwähnt, funktioniert mein Code nicht so richtig, wenn es sich nicht um das gleiche Verzeichnis wie das, wo mein Code ist, handelt. Es werden Dateien nicht von Verzeichnissen unterschieden! Um die Fehler besser erkennen zu können, habe ich in die Funktion drei "echo"'s eingebaut! $inhalt ist der jeweilige Dateiname! Wenn $inhalt eine Datei ist soll der Text blau sein, bei einem Verzeichnis grün, sonst rot! Nach jedem Dateinamen kommt nochmal filetype($inhalt) Zur Fehlerbeschreibung: Also wenn ich im gleichen Verzeichnis bin, ist alles richtig (Dateinamen: farbe blau, filetype file; Verzeichnisse: farbe grün, filetype dir) "." und ".." sind immer richtig (farbe = rot und filetype = dir) In Unterverzeichnissen sind die Dateien noch richtig, aber Verzeichnisse sind rot und haben filetype = file. (Ausnahme: Unter-unterverzeichnis ist wie übergeordnete Verzeichnisse) Wenn jedem übergeordnetem Verzeichnis haben Dateien und Verzeichnisse als filetype dir und sind rot. Ich hoffe, ich konnte das Problem etwas schildern! Hier mein Code: [code] function verzeichnisinhalt($verzeichnis){ $akt_verz = $GLOBALS["akt_verz"]; $rueckgabe_dateien = array(); $rueckgabe_verzeichnisse = array(); $rueckgabe_andere = array(); $handle = opendir($verzeichnis); while ($inhalt = readdir ($handle)){ if(is_file ($inhalt)){ array_push($rueckgabe_dateien, $inhalt); echo "<a href=\"funktionen.php?akt_verz=".$akt_verz."/".$inhalt."\"><font color=\"#0000ff\">".$inhalt."</font></a>".filetype($inhalt)."<br>\r\n"; }else{ if(is_dir($inhalt)){ array_push($rueckgabe_verzeichnisse, $inhalt); echo "<a href=\"funktionen.php?akt_verz=".$akt_verz."/".$inhalt."\"><font color=\"#00ff00\">".$inhalt."</font></a>".filetype($inhalt)."<br>\r\n"; }else{ array_push($rueckgabe_andere, $inhalt); echo "<a href=\"funktionen.php?akt_verz=".$akt_verz."/".$inhalt."\"><font color=\"#ff0000\">".$inhalt."</font></a>".filetype($inhalt)."<br>\r\n"; } } } closedir($handle); $rueckgabe = array($rueckgabe_verzeichnisse, $rueckgabe_dateien, $rueckgabe_andere); return $rueckgabe; } if(!$akt_verz){$akt_verz = ".";} $verzeichnisinhalt = verzeichnisinhalt($akt_verz); [/code] Vielen Dank für evtl. Antworten! mfg, Ümit

Antwort 1 von semi

Hier ein etwas korrigierter Ausschnitt.
Der Fehler ist, dass $inhalt nur ein Datei-/Verzeichnisname ist, es fehlt der ganze Pfad bis dahin.
Klartext: statt is_file($inhalt), is_file($akt_verz . "/" . $inhalt)
Ansonsten kommt noch die URL-Kodierung dazu.

...
while (....)
  $tmp = urlencode($akt_verz . "/" . $inhalt);
  if(is_file($akt_verz . "/" . $inhalt)){
    array_push($rueckgabe_dateien, $akt_verz . "/" . $inhalt);
    echo "<a href=\"funktionen.php?akt_verz=" . $tmp . "\"><font
....

Gruß,
Michael

Antwort 2 von misterUE

Vielen Dank! Es funktioniert super!

mfg, Ümit

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: