Moin!
ich hab es mal mit deiner methode ausprobiert fastix, aber jetzt überschreibt er ständig die einträge in der eintraege.txt-datei. im endeffekt bleibt immer nur ein eintrag drin.
Dann hast Du was falsch abgeschrieben. (Ich habs getestet, es gibt nur noch ein Problem, das kann man aber abwenden, wenn man eine
Nimm das komplette Skript und ändere den HTML- Teil.
<?
So geht das nicht, es ist auf bestimmte unsichere Optionen in der php.ini angewiesen.
Konfiguration:
$neu_vor_alt=true; # >> false, wenn alt vor neu: Ohne Anführungsstriche!
$gburi="http://localhost/test/gb.php";
$filename="eintraege.txt";
Wir lesen erstmal die Daten:
$daten_alt=""; $daten_neu="";
if (file_exists($filename)){
$datei = fopen($filename,"r");
$daten_alt = fread($datei,filesize($filename));
fclose($datei);
}
if (isset($_POST['abschicken'])) {
$kommentar = stripslashes(htmlentities(($_POST['kommentar'])));
# Es fehlte das Umwandeln von HTML-Code.
# Sonst wird womöglich irgendwelcher JS-Scheiss in Dein GB eingetragen und alle wundern sich :)
$kommentar = str_replace("\n","<br>",$kommentar);
# str_replace ist bei einfachen Erstzungen schneller
# Die anderen Variablen sind genau so zu behandeln:
$name = stripslashes(htmlentities(($_POST['name'])));
$email= stripslashes(htmlentities(($_POST['email'])));
$url = stripslashes(htmlentities(($_POST['url'])));
# Basteln
$daten_neu = "<hr><b>Name:</b> $name<br>
<strong>Ort:</strong> $ort<br>
<strong>Email:</strong> <a href='mailto:$email'>$email</a><br>
<strong>Homepage:</strong> <a href='$url'>$url</a><br>
<strong>Datum:</strong> " . date('d. F Y H:i') . "<br>
<strong>Eintrag:</strong><br>
$kommentar<br>\n\n";
# Hier wird es ernst:
if ($neu_vor_alt) {
$daten=$daten_neu.$daten_alt;
} else {
$daten=$daten_alt.$daten_neu;
}
# Flatfile öffnen und überschreiben:
$datei = fopen($filename,"w");
fwrite($datei, $daten);
fclose($datei);
# Umleitung wegen Reload:
header("Location: $gb_uri");
}
Es folgt HTML:
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
</head>
<h1>Gästebuch</h1>
<form method="POST">
<pre>
Name: <input type="text" name="name">
eMail: <input type="text" name="email">
URL: <input type="text" name="url">
Kommentar:
<textarea name="kommentar"></textarea>
<input type="submit" name="abschicken" value="abschicken">
</pre>
</form>
<?php
Für die Ausgabe brauchst Du nicht neu lesen, das hast Du oben schon getan:
if ($daten_neu.$daten_alt != "") {
if ($neu_vor_alt) {
print $daten_neu.$daten_alt;
} else {
print $daten_alt.$daten_neu;
}
} else {
print "<div style='font-weight:bold; text-align: center'>Es sind keine Einträge vorhanden!</div>";
}
?>
</body>
</html>
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch für seriöse Agenturen.