Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

mit PHP Dateien aus Verzeichnis auslesen

Ich habe mich mal an eine Art "CMS" (oder besser gesagt Onlineaktualisierungstool) heraungewaagt, dass ich bei HomePH Design v1.55[/font][/url] integriert habe..


Zunächst wird das Hauptverzeichnis ausgelesen und die Dateien werden dann aufgelistet und stehen in einem Dropdownmenü zur Auswahl. Soweit funktioniert auch alles, allerdings werden im Auswahlmenü auch die Order angezeigt und nicht nur die Dateien..

Wie erreiche ich jetzt, dass die Ordner von vornerein gar nicht ausgelesen werden oder zumindest nicht im Dropdownmenü auftauchen ?

<?php

##### PASSWORD #####

$password "{replacepassword}";

##### PASSWORD #####


$absolute_path "../";
$dl "../";
$none "- none -";

$dir opendir($absolute_path);

$empty true;
while($file readdir($dir)) 
{
if (($file != "..") && ($file != ".")) 

   
$list .= "<option>$file</option>
"
;
}
}
closedir($dir);


$korrekt false;
$finish false;
$updatechoose $_POST["updatechoose"];

if($_POST["choose"])
{

if($_POST["updatechoose"] == "")
{
$alert1 "Wählen Sie erst eine Seite aus !";
}

else
{
$openinclud fopen($absolute_path.$updatechoose"r");
$includ fread($openincludfilesize($absolute_path.$updatechoose));

$includ1 str_replace("<?","{PHP",$includ);
$include str_replace("?>
","PHP}",$includ1);

$korrekt = true;
}

}

if($_POST["submit"])
{
if($_POST["password"] == $password)
{
$openfile = fopen($absolute_path.$_POST["include2"], "w");
$updatewrite = str_replace("{PHP","<?",$_POST["updateversion"]);
$updatewrite2 = str_replace("PHP}","?>",$updatewrite);
fwrite($openfile, $updatewrite2);
fclose($openfile);
$alert = "Die Website wurde aktualisiert ;-)";

$finish = true;


}
else
{
$alert = "Falsches Passwort. Diese Option ist nur für Webmaster der Website.";
}

}

if($finish == true)
{
$openreplace1 = fopen($absolute_path.$_POST["include2"], "r+");

$replace = fread($openreplace1, filesize($absolute_path.$_POST["include2"]));
$replace1 = str_replace('\"','"',$replace);
$replace2 = str_replace("\'","'",$replace1);
fclose($openreplace1);
$openreplace2 = fopen($absolute_path.$_POST["include2"], "w");
fwrite($openreplace2,$replace2);
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<link rel="stylesheet" type="text/css" href="../main.css">
<?php include("../title.txt"?>
</head>

<body>


<form action="<?=$PHP_SELF;?>" method="POST">
<span class="ueberschrift">Onlineaktualisierung der Website</span><br><br>
<b><?=$alert1;?></b><br>

Dies ist der Onlineaktualisierungsbereich<br><br>
Bitte wählen Sie aus, welche Seite Sie updaten möchen :<br><br>


<select class="login" name="updatechoose" value="<?=$_POST["updatechoose"];?>">
<option></option>
<?=$list;?>
</select>
<input class="loginbutton" type="submit" name="choose" value="Auswählen"><br>
</form>



<form action='<?=$PHP_SELF;?>' method='POST'>

<input type="text" style="display:none;" name="include2" value="<?=$updatechoose;?>">

<b><?=$alert;?><? if($korrekt == true){echo 'Sie aktualisieren gerade "';echo "$updatechoose";echo '"';}?></b><br>
<textarea name='updateversion' cols='60' rows='20'><? if($korrekt == true){echo $include;}?></textarea><br><br>
Passwort : <input type='password' name='password' value='******' onfocus='this.value=""'>
<input type='submit' name='submit' value='Updaten'><br>
<form>

</center>

</body>
</html>
« Letzte Änderung: 16.09.05, 16:38:49 von Der olle Schwoebel »

Antworten zu mit PHP Dateien aus Verzeichnis auslesen:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Servus,

ist doch nur ne Darstellungssache. Guck dir mal die Funktion is_dir() an...

http://de3.php.net/manual-lookup.php?pattern=isdir&lang=de

Mario 8)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ja, das hatte ich ja "eingebaut"


:

if (($file != "..") && ($file != ".") && (!is_dir($file))

Hab das ganze dann auch noch in eine if-Schleife eingebaut, aber es wurden immer wieder auch die Ordner angezeigt..

Entweder ich mache Denkfehler oder ich hab einfach noch so wenig Ahnung von PHP um is_dir richtig einsetzen zu können.... 
Kannst du vielleicht mal schnell so eine Schleife schreiben, die funktionsfähig ist ? Es ist ja nicht so, dass ich es nicht versucht hätte, hab aber zwei Stunden davor gesessen und das Ding nich zum laufen bekommen... :-* Danke  ;)



Ich setze das Script jetzt übrigens auch schon auf einer "meiner" Homepages ein :
http://www.stadtschule-michelstadt.com/update/cms.php

« Letzte Änderung: 16.09.05, 21:20:33 von Der olle Schwoebel »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Morgen!

Ist wahrscheinlich zu früh... aber die Zeile die du in deinem letzten Beitrag drinhast, finde ich da nicht. Ist auch egal, hier lässt du das doch auslesen

<code>
while($file = readdir($dir))
{
if (($file != "..") && ($file != "."))
{
    $list .= "<option>$file</option>
";
}
}
closedir($dir);
</code>

und da musst du ansetzen...

Mario 8)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ok, hier nun die "Version", die anscheinend korrekt sein sollte :

$absolute_path = "../";

$dir = opendir($absolute_path);

while($file = readdir($dir))
{
if (($file != "..") && ($file != ".") && (!is_dir($file)))
{
    $list .= "<option>$file</option>
";
}
}
closedir($dir);

Es werden aber immernoch Verzeichnisse angezeigt... Ist jetzt zwar nicht weiter schlimm, weil ja nur eine Fehlermeldung ausgegeben wird, wenn man ein Verzeichnis auswählt, aber ein Schönheitsfehler ist es ja trotzdem...

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ist zwar eine seeeehr unsaubere Lösung aber hast Du mal versucht, nach dem Konzept zu filter, dass nur die Files angezeigt werden, die an frühestens length()-3ter Stelle einen "." im Namen haben?

Edit: Merke gerade, dass die Formulierung auch sehr mistig war ;D
Wollte sagen: Du prüfst sozusagen, ob irgendwo am Ende ein Punkt kommt und dann noch max 4 Zeichen für die Dateiendung.
Mir fiel aber gerade ein, dass dann zB auch ./bla durchkommen würde.
Das kannste ja aber in ner früheren Abfrage schon ausfiltern, indem Du alle "./" raushaust.

« Letzte Änderung: 17.09.05, 15:59:28 von Spawn »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Wie überprüfe ich denn jetzt, ob eine bestimmte Endung vorkommen oder nicht ?

Einfach

if($file = ".php") ?

Dann müsste ja eigentlich nur Dateien angezeigt werden, die .php heißen und nicht in denen .php vorkommt, oder ?

« passwortsicherung im ftp-verzeichnisForum mit phpBB »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Grundstrich
Der Begriff des Grundstrichs im Bereich der Typografie, bezeichnet den senkrechten Strich der Buchstaben. Bei Schriftarten mit variabler Strichstärke, wie zum Beispi...

Haarstrich
Der Begriff Haarstrich stammt aus dem Bereich der Typographie. Bei Schriften, wie zum Beispiel der Antiquaschrift mit unterschiedlichen Strichstärken, wird zwischen ...

Scart
SCART, ein europäischer Standard für Steckverbindungen, spielte eine wichtige Rolle in der Geschichte der Audio- und Videotechnik. Ursprünglich konzipiert,...