Du machst dieselben Fehler erneut:
Falsch:
$feld[element]
Richtig:
$feld['element']
Warum? Elementnamen sind Texte, also müssen sie in Hochkommata (einfache oder doppelte ist egal).
Warum "funktioniert" es auch ohne? Weil das eigentlich Konstanten sind. PHP ist aber idiotenfreundlich und gibt als Wert für die Konstante ihren eigenen Namen aus - was wiederum einem Text entspricht. Mag oft gut gehen, kann aber auch mal gewaltig daneben gehen.
Folgende Lösung (Datei "lesen.php"):
<?php
// schickt uns wieder zurück zur Ordneransicht
function zurueck() {
$sParam= $_REQUEST['datei'];
$i1= strrpos( $sParam, '/' );
if ( $i1=== false ) $sParam= ''; else $sParam= '?ordner='. substr( $sParam, 0, $i1 );
header( 'Location: http://'. $_SERVER['SERVER_ADDR']. '/dir.php'. $sParam );
exit;
}
// wurde überhaupt ein Dateiname übergeben?
if ( !isset( $_REQUEST['datei'] ) ) die( 'keine Datei angegeben' );
// soll ein Dateiinhalt gespeichert werden?
if ( isset( $_REQUEST['speichern'] ) ) {
if ( file_put_contents( $_REQUEST['datei'], $_REQUEST['inhalt'] )=== false ) die(' konnte Datei nicht schreiben' );
zurueck();
} else
// ...oder wurde die Bearbeitung abgebrochen?
if ( isset( $_REQUEST['zurueck'] ) ) {
zurueck();
// ...ansonsten Datei zum Bearbeiten anzeigen
} else {
// existiert sie überhaupt?
if ( !file_exists( $_REQUEST['datei'] ) ) die( 'Datei existiert nicht' );
// Inhalt lesen und anzeigen
$sFile= file_get_contents( $_REQUEST['datei'] );
echo '<html><head>
<title>Datei bearbeiten</title>
</head><body>Datei: '. $_REQUEST['datei']. '
<form action="'. $_SERVER['REQUEST_URI']. '" method="POST">
<textarea name="inhalt" cols="170" rows="45" style="width: 100%; height: 80%;">'. $sFile. '</textarea>
<input type="hidden" name="datei" value="'. $_REQUEST['datei']. '" />
<input type="submit" name="speichern" value="Speichern" />
<input type="submit" name="zurueck" value="Abbruch" />
</form>
</body></html>';
}
?>
Das funktioniert zwar einwandfrei, aber vor allem sollst du es versuchen zu verstehen.