Gästebuch-Fehler der .txt Datei?

Weiß jetzt erst recht nicht mehr was ich machen soll!

Ich kann wetten via Flash gehts NICHT!


Also kann es ja nur per PHP gehen......

kann mir den hier niemand weiter helfen? Is den das so schwer?
 
jackassol hat gesagt.:
Ich kann wetten via Flash gehts NICHT!
Du liest die Datei doch mit Flash aus, oder? Und du kannst doch auch sicherlich in Flash mit Arrays arbeiten. Und Flash wird doch wohl auch eine Funktion haben, um ein Array "umzudrehen" , so dass der letzte Eintrag vorne und die alten hinten sind. Wenn nicht, siehe unten.

jackassol hat gesagt.:
Weiß jetzt erst recht nicht mehr was ich machen soll!
[...]
Also kann es ja nur per PHP gehen......

kann mir den hier niemand weiter helfen? Is den das so schwer?
Hier steht eine Möglichkeit, wie du es machen kannst.
fanste hat gesagt.:
Ansonste musst du halt mit PHP die Datei auslesen, den neuen Eintrag vor die alten setzen und alles wieder in die Datei schreiben. Finde ich aber umständlicher.
Wie man eine Datei ausliest und etwas hineinschreibt weist du. Hast du zumindest in deinem Script verwendet.
 
Und was setze ich ein? Und wo genau?
Hä?

PHP:
$fp = fopen('pfad/zur/datei.txt','r')
$txt = '';
while(!feof($fp))
{
  $txt .= fgets($fp);
}
fclose($fp);

$txt = $neuer_eintrag."\n".$txt; #$neuer_eintrag enthält den Neuen Eintrag, der in die Dateo geschrieben werden soll.
$fp = fopen('pfad/zur/datei.txt','w');
fwrite($fp, $txt);
fclose($fp);
Abändern auf dein Gästebuch musst du es schon selbst.
 
Sorry nochmals....hab ihn mal geändert......(weiß das er falsch ist) aber was ist den hier an dem Code genau falsch?

PHP:
<?

if (!isset($name) || !isset($email) || !isset($message) || empty($name) || empty($email) || empty($message)) {
print "&result=Fail";
print "&errorMsg=" . urlencode("Bitte alle Felder ausfüllen.");
exit;
}

$email = strtolower($email);

addentry($name, $email, $message);

function addentry($name, $email, $message) {

$posted = strftime("%D %I:%M %p");

$message = stripslashes($message);




$file = fopen('entry.txt', 'r');
$txt = '';

if (!$file) {
print "&result=Fail";
print "&errorMsg=" . urlencode("Could not open entry.txt file. Change CHMOD levels to 766.");
exit;
}

if(!feof($file))
{
  $txt .= fgets($file);
}
fclose($file);

$txt = $addentry."\n".$txt; #$neuer_eintrag enthält den Neuen Eintrag, der in die Dateo geschrieben werden soll.
$file = fopen('entry.txt','w');
fwrite($file, $txt, "<font color=\"#6F6453\">Name:</font> $name\n<font color=\"#6F6453\">Email:</font> <font color=\"#6F6453\"><u><A href=\"mailto:$email\">$email</A></u></font><br>\n<font color=\"#6F6453\">Posted:</font> $posted\n<font color=\"#6F6453\">Message:</font> $message\n\n");
fclose($file);  


fputs($file, 
fclose($file);






// Send admin an email when new entry occurs
mailAdmin($name, $email, $message);
}

function mailAdmin($name, $email, $message) {
    $mailTo = "jackassol@web.de";
    $mailFrom = "From: <Extraweg>";
    $mailSubject = "Neuer Gästebuch Eintrag";
    $mailBody = "A visitor to your site has left the following information in your guestbook:\n
    Name: $name
    Email: $email
    The visitor commented:
    ------------------------------
    $message 
    ------------------------------
    You can view the message at:
    http://www.extraweg.de";
    mail($mailTo, $mailSubject, $mailBody, $mailFrom);
}

print "&result=okay";
exit;

?>
 
Da ist so manches falsch.
Die 3 größten Fehler:
1. fwrite Hat zwar 3 Parameter, aber der dsritte stellt die Länge des Textes dar, der gespeichert wird und nicht eine 2. Möglichkeit Text in die Datei zu speichern. Das macht man über den 2. Parameter.
2. Ich habe doch while(!feof(...)) geschriben. Warum dann auf einmal if?
3. Du müsstest ein paar Parsererror bekommen haben, die du auch sehr gut alleine gefunden hättest. z.B. hier
PHP:
fputs($file,  #Syntaxerror
fclose($file); #ist schon geschlossen

Hier mal das überarbeitete Script.
PHP:
<?

if (!isset($_POST['name']) || !isset($_POST['email']) || !isset($_POST['message']) || empty($_POST['name']) || empty($_POST['email']) || empty($_POST['message']))
{
	print "&result=Fail";
	print "&errorMsg=" . urlencode("Bitte alle Felder ausfüllen.");
	exit;
}

$email = strtolower($email);

addentry($name, $email, $message);

function addentry($name, $email, $message)
{

	$posted = strftime("%D %I:%M %p");

	$message = stripslashes($message);




	$file = fopen('entry.txt', 'r');

	if (!$file)
	{
		print "&result=Fail";
		print "&errorMsg=" . urlencode("Could not open entry.txt file. Change CHMOD levels to 766.");
		exit;
	}
	
	$txt = '';
	while(!feof($file))
	{
	  $txt .= fgets($file);
	}
	fclose($file);

	$addentry = "<font color=\"#6F6453\">Name:</font> $name\n<font color=\"#6F6453\">Email:</font> <font color=\"#6F6453\"><u><A href=\"mailto:$email\">$email</A></u></font><br>\n<font color=\"#6F6453\">Posted:</font> $posted\n<font color=\"#6F6453\">Message:</font> $message\n\n";

	$txt = $addentry."\n".$txt; #$neuer_eintrag enthält den Neuen Eintrag, der in die Dateo geschrieben werden soll.
	$file = fopen('entry.txt','w');
	fwrite($file, $txt);
	fclose($file);



	// Send admin an email when new entry occurs
	mailAdmin($name, $email, $message);
}

function mailAdmin($name, $email, $message) {
    $mailTo = "jackassol@web.de";
    $mailFrom = "From: <Extraweg>";
    $mailSubject = "Neuer Gästebuch Eintrag";
    $mailBody = "A visitor to your site has left the following information in your guestbook:\n
    Name: $name
    Email: $email
    The visitor commented:
    ------------------------------
    $message
    ------------------------------
    You can view the message at:
    http://www.extraweg.de";
    mail($mailTo, $mailSubject, $mailBody, $mailFrom);
}

print "&result=okay";
exit;

?>

Zudem bin ich davon ausgegangen, dass du den Eintrag über ein Formular machst, dass mit der Methode POST abgeschickt wird. Ist es stattdessen GET, ändere alle $_POST in $_GET.

Hilfe zu den Funktionen und ihren Parametern findest du unter http://de.php.net/FUNKTIONSNAME
 
Mit deinem überarbeiteten Script gehts nicht!

Es kommt immer die Meldung: Bitte alle felder ausfülllen!


Wenn ich alle post in get um stell, gehts auch nicht!


Was ist den jetzt falsch?
 
Mach mal die Prüfung, ob alles gesetzt ist, so wie du sie vorher hattest. Also einfach die Bedingung bei IF wieder in die alte ändern. (aus $_POST['name'] wird $name, usw)
 
Ich weiß nicht mehr weiter...hier mal die ganzen Dateien!

Vieleicht findest du den Fehler!
 

Anhänge

Zuletzt bearbeitet:
Zurück