$d=fopen("gaestebuch.txt","w+"); // Datei zum Anhängen öffnen
Argh! Nimm NIE "w+", es sei denn, Du weißt _GENAU_, was Du tust. "r+" ist die Lösung. (w+ löscht die ganze File vorher, r+ dagegen nicht)
Das ist hier aber ziemlich Wurst, ich würde sogar behaupten, daß w hier besser geeignet ist - wir wollen schließlich die ganze Datei neu schreiben, da kann's nicht schaden, wenn man vorher reinen Tisch macht und den ganzen alten Kram rausschmeißt.
Letztenendes ist es allerdings wie gesagt Wurst, denn der neue Inhalt ist garantiert länger als der alte, die alten Daten werden also immer komplett überschrieben.
Ach ja, hier ist noch ein Fehler:
Nicht noch ein Fehler, das _ist_ der Fehler.
fputs($a,"$inhalt");
^
das soll doch wohl ein $d sein, oder? Du hast ja $a schon geschlossen.
Eben, der alte Inhalt wird nicht in die Datei $d zurückgeschrieben. Da liegt das Problem, mit r oder w hat das nichts zu tun.
Ich hätte davon abgesehen noch einen netten, weil extrem kurzen, anderen Ansatz für "umgekehrt ausgeben":
Wir lesen ja mit
$g=file("gaestebuch.txt");
die Gästebuchdaten in ein Feld (Array) ein. Felder kann man in PHP freundlicherweise gut sortieren, und eine Funktion namens array_reverse() dreht den kompletten Feldinhalt um.
Statt also den Aufwand zu betreiben, jedesmal die Gästebuch-Datei komplett neu zu schreiben, könnte man das Ziel "umgekehrt ausgeben" auch mit nur einer Zeile erreichen:
$g=file("gaestebuch.txt"); // Daten in ein Feld einlesen
$g=array_reverse($g); // Feld umdrehen
Gruß,
soenk.e