Eventuell könnte Mir Hier jemand etwas Helfen, und Mich über meinen Fehler aufklären.
Tatsächlich sind es mehrere Fehler. Das Hauptproblem, so wie ich es sehe, ist einfach, dass Dein Code sehr durcheinander geraten ist!
Auch wenn ich noch immer nicht verstehe, warum man den Dateiinhalten eine 0 anhängen sollte, schreibe ich Dir hier einmal eine Idee wie ich es lösen würde und habe mich bemüht den Code so nachvollziehbar wie möglich zu gestalten und dabei Deine Ansätze mit einfließen zu lassen...
In meinem Beispiel befindet sich der Code in der
index.php und die Ordner in denen die zu ändernden Dateien stecken, befinden sich auf gleicher Ebene wie die
index.php.
Das Verzeichnis könnte so aussehen:
Code:
..
ordner_1
index.html
datei1.txt
datei2.css
datei3.dat
ordner_2
datei4.html
datei5.mp4
index.php
Das Problem dass ich sehe und in Post #8 schon genannt habe ist, dass bis auf die
index.html in
ordner_1 alle anderen Dateien verändert werden! (Möglicherweise sind bei Dir aber nur Dateien enthalten bei denen das kein Problem ist!)
Inhalt von
index.php:
PHP:
<?php
// Werte von folder und change aus Adresse holen
// Bei error_reporting(E_ALL); würden bei Erstaufruf der Datei zwei Fehlermeldungen ausgegeben da folder und change nicht definiert sind
$getfolder = strip_tags(htmlspecialchars($_GET['folder']));
$getchange = strip_tags(htmlspecialchars($_GET['change']));
// HTML-Kram
echo "<!doctype html />
<html lang=\"de\" />
<head />
<meta charset=\"UTF-8\" />
<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\" />
<title />Dateien in einem Ordner eine Null anhängen</title>
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />
</head>
<body />";
// Verzeichnis in dem sich diese Datei befindet scannen
$folderarray = scandir("./");
// Wenn folder in Adresse nicht angegeben ist, die Ordner als Links auflisten
if($getfolder == "") {
echo("<p />Klicke auf einen Ordner um die dort enthaltenen Dateien zu ändern:<br /><br />");
foreach($folderarray as $folderhandle) {
// Nur Ordner (Verzeichnisse) anzeigen und .. und . ausschließen
if(is_dir($folderhandle) && $folderhandle != ".." && $folderhandle != ".") {
echo("• <a href=\"?folder=".$folderhandle."&change=notnow\" target=\"_self\" alt=\"Dateien in ".$folderhandle." ändern\" title=\"Dateien in ".$folderhandle." ändern\" />".$folderhandle."</a><br />");
}
}
echo("</p>");
// Wenn folder angegeben ist, dann nutzen sofern er existiert (in folderarray vorhanden) und nicht leer ist
} elseif(in_array($getfolder, $folderarray) && count(glob("$getfolder/*")) != 0) {
// Den angegebenen Ordner scannen
$filearray = scandir($getfolder);
// Wenn change nicht gleich "doit" ist, dann Dateien auflisten (mit Größe in Bytes) und fragen ob alle geändert werden sollen
if($getchange != "doit") {
echo("<p />Im Ordner <code />".$getfolder."</code> befinden sich folgende Dateien:<br /><br />");
foreach ($filearray as $filehandle) {
$filename = $getfolder."/".$filehandle;
if (is_file($filename) && $filehandle != "index.html") {
echo("• ".$filehandle." | ".filesize($filename)." Bytes <br />");
}
}
echo("<br />Alle Dateien änden? <a href=\"?folder=".$getfolder."&change=doit\" target=\"_self\" alt=\"Alle Dateien in ".$getfolder." ändern\" title=\"Alle Dateien in ".$getfolder." ändern\" />JA</a> | <a href=\"?folder=&change=\" target=\"_self\" alt=\"Zurück zur Übersicht\" title=\"Zurück zur Übersicht\" />NEIN</a><br /><br /><small />Mit einem Klick auf <b />JA</b> wird den Dateiinhalten, am Dateiende eine 0 (Null) hinzugefügt!</p>");
// Wenn change gleich "doit" ist, die Dateien verarbeiten und auflisten...
} else {
echo("<p />Im Ordner <code />".$getfolder."</code> befinden sich folgende Dateien:<br /><br />");
foreach($filearray as $filehandle) {
$filename = $getfolder."/".$filehandle;
// wenn Arrayeintrag (filearray) eine Datei und nicht index.html ist
if(is_file($filename) && $filehandle != "index.html") {
$filesize = filesize($filename);
echo("• ".$filehandle." | alt: ".$filesize." Bytes | neu: ");
// wenn die Datei existiert und beschreibbar ist
if(is_writable($filename)) {
// a+ ist nicht erforderlich, da die Datei nicht ausgelesen wird - zum Schreiben reicht a
$singlefile = fopen($filename,"a");
// Hier wird die Null an den Dateiinhalt angehängt
fwrite($singlefile,"0");
fclose($singlefile);
// nach Änderung einen Byte hinzuzählen
echo(($filesize +1)." Bytes<br />");
// Hinweis ausgeben wenn Datei nicht geändert werden kann
} else {
echo($filesize." Bytes (<code />Hinweis: Die Datei existiert nicht mehr oder ist schreibgeschützt!</code>)<br />");
}
}
}
// Alle Änderungen wurden abgeschlossen
echo("<br />Vorgang abgeschlossen!<br /><br /><a href=\"?folder=&change=\" target=\"_self\" alt=\"Zurück zur Übersicht\" title=\"Zurück zur Übersicht\" />Klicke hier</a>, um zur Ordnerübersicht zurück zu gelangen.</p>");
}
// Wenn der angegebene Ordner nicht existiert oder keine Dateien enthält
} else {
echo("<p />Der Ordner <code />".$getfolder."</code> existiert nicht mehr oder enthält keine Dateien!<br /><br /><a href=\"?folder=&change=\" target=\"_self\" alt=\"Zurück zur Übersicht\" title=\"Zurück zur Übersicht\" />Klicke hier</a>, um zur Ordnerübersicht zurück zu gelangen.</p>");
}
// HTML-Tags schließen
echo "</body>
</html>";
?>
Hinweis: Nicht berücksichtigt ist hier eine gesonderte Abfrage für den Fall, dass ein Ordner ausschließlich eine index.html enthält!
Da dieser Post wenig mit Hilfe zur Selbsthilfe zu tun hat, möchte ich Dir folgendes empfehlen:
Schaue Dir den Code an und dann was der Code macht...
Anschließend versuche es nachzubauen! (Dein Code kann natürlich anders ausschauen und aufgebaut sein!)