Ordner auslesen code funktioniert nicht

jojo4ever

Grünschnabel
Also mein Code funktioniert irgendwie nicht D:

Es kommt auch kein Error

Er zeigt mir die unterordner und Files falsch an

PHP:
if ($handle = opendir("C:\")) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
        	if(is_file($file) == FALSE){
        	if(strpos($file,"\\") == True){
						echo '<div class="link"><b><a href="?do='.$_GET['do'].'&dir='.str_replace("\\\\", "\\", $dir).''.$file.'"><font color="#FF0000">[DIR]</font>'.$file.'</a></b></div><br>';
			}
			else
			{
			echo '<div class="link"><b><a href="?do='.$_GET['do'].'&dir='.str_replace("\\\\", "\\", $dir).'\\'.$file.'"><font color="#FF0000">[DIR]</font>'.$file.'</a></b></div><br>';
			}

			}
            else
            {
			echo '<div class="link"><b><a href="?do='.$_GET['do'].'&dir='.str_replace("\\\\","\\",$dir).'&edit='.$file.'"><font color="#009C00">[FILE]</font>'.$file.'</a></b></div><br>';
			}
        }
    }
closedir($handle);
}
 
Hi

also auf den ersten Blick, kann ich jetzt keinen Syntax fehler finden ;) aber den sollte es ja nicht geben wie du gesagt hast.

Es wäre hilfreich zu wissen was er dir ausgibt und was er dir ausgeben soll.
Also schreib uns doch mal bitte den output auf den dir das skript liefert.

mfg XerY
 
Also, wenn ich das Skript 1:1 teste bei mir, kommt erst mal ein Fehler in Zeile 6.

Warum?

PHP:
if ($handle = opendir("C:\")) {

Das sollte so aussehen, da sonst der Backslash die schließenden Anführungszeichen maskiert.

PHP:
if ($handle = opendir("C:\\")) {

Der zweite Fehler:
PHP:
if(strpos($file,"") == True){
[phpf]strpos[/phpf] darf keinen leeren Delimiter haben. Würde ja auch gar keinen Sinn ergeben?

Das sind die ersten Fehler.

Am besten schaltest du mal [phpf]error_reporting[/phpf] auf E_ALL.
 
Hi nochmal ;)

nimm mal bitte die ganzen abfragen weg und echo dir einfach mal die ganzen entries nach dem schema

PHP:
if(is_dir($file)){
   echo "[dir]".$file."<br>";
} else {
   echo "[file]".$file."<br>"
}

edit : danke Felix ;) den nicht maskierten Backslash hatte ich wohl gedanklich automatisch berichtigt... :D

und schreib mal den output auf bitte ;)
 
Zuletzt bearbeitet:
Output: mit dem Code von xErY funktioniert auch nicht richtig D:
Und das bei strpos,da stehen 2 Slash´s drin die aber irgendwie hier gefiltert werden ?!


Code:
Dir: C:\

..
[file]!KillBox                   Ist eigentlich ein Ordner
[file].rnd
[file]AddOn  Ist eigentlich ein Ordner            
[file]asd Ist eigentlich ein Ordner
[file]ATI Ist eigentlich ein Ordner
[file]AUTOEXEC.BAT
[file]boot.ini
[file]bootfont.bin
[file]code
[file]Config.Msi
[file]CONFIG.SYS
[file]datei.txt
[file]Dev-Cpp
[file]Dokumente und Einstellungen Ist eigentlich ein Ordner
[dir]Downloads
[file]HLKGN_DONE_KEYS.txt
[file]IO.SYS
[file]Lxk1100 Ist eigentlich ein Ordner
[file]MAGIX Ist eigentlich ein Ordner
[file]moduleName.txt
[file]MSDOS.SYS
[file]Neu Textdokument.txt
[file]NTDETECT.COM
[file]ntldr
[file]pagefile.sys
[file]Perl Ist eigentlich ein Ordner
[file]PHP Ist eigentlich ein Ordner
[file]phpBB2-2.0.22-deutsch.zip
[file]Program Files Ist eigentlich ein Ordner
[file]Programme Ist eigentlich ein Ordner
[file]psapi.dll
[file]RECYCLER Ist eigentlich ein Ordner
[file]Ryan Mcee - Wie wasser.flv
[file]screenshot.bmp
[file]ST6UNST.LOG
[file]System Volume Information
[file]Team17
[file]TEST.XML
[file]ts2
[file]ts2.rar
[file]wally Ist eigentlich ein Ordner
[file]Westwood Ist eigentlich ein Ordner
[file]Westwood2 Ist eigentlich ein Ordner
[file]Westwoodx Ist eigentlich ein Ordner
[file]WINDOWS Ist eigentlich ein Ordner
[file]WTV Recordings Ist eigentlich ein Ordner
 
Zuletzt bearbeitet:
Ich habe das Problem gelöst ;)

PHP:
<?php
$path = "C:\\";
if ($handle = opendir($path)) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            if(is_file($path.$file) === true)
            {
              echo "FILE: ".$file."<br>";
            }
            elseif(is_dir($path.$file) === true)
            {
              echo "DIR: ".$file."<br>";
            }
            else
            {
              echo "UNKNOWN: ".$file."<br>";
            }
        }
    }
closedir($handle);
}
?>
[phpf]is_file[/phpf] bzw. [phpf]is_dir[/phpf] braucht natürlich einen absoluten Pfad zur Datei und kann mit einem Texteintrag nicht viel anfangen, deshalb gibt es auch immer false zurück.
 
Also ich hab es gerade mal 1000x durchlaufen lassen und es hat keine Fehler gemacht.

Ist bei dir vielleicht die safe_mode Direktive aktiviert? (Einzusehen per [phpf]phpinfo[/phpf])
 
Zurück