Für ein Dateiverwaltungssystem verwende ich eine foreach-Schleife für die Ausgabe aller Dateien und Ordner in Verzeichnissen. Jetzt möchte ich die Dateien und Ordner über ein Formular umbenennen. Mein Code sieht wie folgt aus:Wie man eine Datei umbenennt, wenn sie in foreach Schleife ausgegeben wird
/* RENDER THE FILES */
foreach ($files as $file) {
.....
<td>
<?php
// FILENAME
if(is_dir($dir.'/'.$file)) {
echo '<div class="sfmfolder">'.$file.'</div><br />';
}
else {
echo '<div class="sfmfile">'.$file.'</div>';
}
?>
</td>
<td>
<?php
// RENAME
if($_POST['renamefile']) {
if(is_dir($dir.'/'.$file)){
rename($dir.'/'.$file, $dir.'/'.$_POST['rename']);
}
else {
rename($dir.'/'.$file, $dir.'/'.$_POST['rename'].'.'.$FileExtension);
}
}
?>
<form method="post" action="">
<input type="text" name="rename" />
<input type="submit" name="renamefile" value="go" />
</form>
</td>
Mein Problem ist: Benennt das Umbenennen einer Datei auch alle anderen Dateien mit diesem Namen die Ordner enthält. Wie erreicht man, dass nur die richtige Datei umbenannt wird? Ich weiß, das Problem ist, dass alle Dateien über die foreeach Schleife ausgegeben
$dir.'/'.$file
den Pfad zur Datei oder einen Ordner
$file
wird, um den Namen der Datei oder des Ordners
Dieser Code ist offen für Pfadangriffe. Sie möchten dagegen einen Schutz hinzufügen. – arkascha
oke aber das war nicht meine Frage. Wie kann ich eine Datei abfangen und diese Datei nur umbenennen? –
Verwenden Sie keine Schleife? – jeroen