Hallo Rudy,
Dann bekomme ich die Fehlermeldung, daß die
Header-Informationen nicht gesendet werden können, da sie
bereits gesendet wurden.
Das heißt, es erfolgte bereits eine Ausgabe an den Browser
bevor Du header() aufgerufen hast.
Ist richtig, gebe vorher ein Formular aus, in dem die Gästebucheinträge gemacht werden können. Dann werden die Einträge überprüft und ist alles ok, gesendet.
Zwei Möglichkeiten:
- Suche nach jeder Ausgabe an den Browser vor dem
header()-Aufruf, die mindestens ein Zeichen lang ist, und
entferne sie - kann eine Leerstelle, eine Leerzeile, Text oder
gar HTML-Code sein. Überprüfe am besten die Skripts, ob keine
Leerzeilen oder Spaces am Anfang vor <?php oder am Ende
nach ?> ausgegeben werden, das ist der häufigste Fehler.
Siehe oben, vermutlich das Formular?
- Schalte ganz am Anfang Deiner Skripts (also in der ersten
Zeile des 1. Skripts, das durchlaufen wird) die
Ausgabepufferung ein mit ob_start(). Dies verhindert jedliche
Ausgabe an den Browser, bis das Skript beendet ist oder
ob_end_flush() aufgerufen wird.
>> http://it.php.net/manual/de/function.ob-start.php
Ok, hab ich mir durchgelesen, verstehe ich aber nicht so ganz.
Nach der header-Umleitung mach am besten ein die(), da die
Umleitungen in Browsern abgeschaltet werden können, also
header(‚Location:
http://www.akk-leo.de/docs/gbformdanke.php‘); die();
Geht an der Stelle leider noch nicht, da der Eintrag ja noch gespeichert werden muß.
Hier mal das komplette Skript:
<?php if ($op == "check") { // Formular wurde gesendet. Eingaben werden getestet<br /> $check\_err = false;
foreach($HTTP\_POST\_VARS as $p\_name=\> $p\_value) {
$message.= "$p\_name:blush:p\_value\n";
//Name eingetragen?
if ($p\_name == "name") {
if ($p\_value Fehler: bitte geben Sie Ihren Namen an!";
$check\_err = true;
}
}
//eMail, falls eingetragen, gültig?
if ($p\_name == "email") {
if ($p\_value \> " ") {
$result = ereg ("^[^@]+@[^@]+\.[^@ \.]+$", $email );
if (!$result){
$msg\_email = " Fehler: keine gültige eMail-Adresse!
(Dieses Feld kann auch leer gelassen werden) ";
$check\_err = true;
}
}
}
//Homepagefeld, falls nicht eingetragen, löschen
if ($p\_name == "homepage") {
if ($p\_value == "http://www.") {
$homepage="";
}
}
//Eintrag vorhanden?
if ($p\_name == "nachricht") {
if ($p\_value Fehler: kein Eintrag vorhanden!";
$check\_err = true;
}
}
}
if (!$check\_err) {
//Weiterleitung an Danke-Seite
header('Location: http://www.akk-leo.de/docs/gbformdanke.php');
//Benachrichtigung per eMail über neuen Eintrag
$admin= '[email protected]';
$subject= 'Neuer Gästebucheintrag www.akk-leo.de';
$message= 'neuer Gästebucheintrag von '.$name."\n\n\n";
$message.= "$nachricht";
mail($admin, $subject, $message, "From: $email");
//Eintrag speichern
$datei="../phpscript/gbeintrag.txt";
if (isset($nachricht)) {
$zeiger=fopen($datei,"r+");
$alt=fread($zeiger,filesize($datei));
//eMail-Link erstellen
if ($email "") {
$email="[eMail](%255C%2522mailto:%2524email%255C%2522)";
}
//Homepage-Link erstellen
if ($homepage "") {
$homepage="[Homepage](%255C%2522%2524homepage%255C%2522)";
}
//Prüfen, ob eMail und/oder Homepage eingegeben wurden und Kontakt entsprechend zusammensetzen
if ($email == "" && $homepage== "") {
$kontakt="";
}
if ($email == "" || $homepage== "") {
if ($email "") {
$kontakt="$email";
} else {
$kontakt="$homepage";
}
}
if ($email "" && $homepage "") {
$kontakt="$email | $homepage";
}
//Datum und Uhrzeit des Eintrages merken
$datum=date("d.m.Y");
$uhrzeit=date("H:i");
//HTML-Zeichen maskieren, Slashes entfernen, Zeilenumbrüche erhalten
$nachricht=htmlspecialchars($nachricht);
$nachricht=stripslashes(nl2br($nachricht));
//Smilies in Grafiken umwandeln
$suche = array (":smile:",
":grins:",
":lol:",
":wink:",
":razz:",
":confused:",
":surprised:",
":eek:",
":rolleyes:",
":redface:",
":cool:",
":mrgreen:",
":mad:",
":sad:",
":cry:");
$ersetze = array ("",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"");
$text = str\_replace($suche, $ersetze, $nachricht);
//Eintrag zusammensetzen
$eintrag="
$name schreibt am $datum um $uhrzeit Uhr:blush:text$kontakt
";
//Cursor zum Dateianfang
rewind($zeiger);
//neuen Eintrag vor alten schreiben
fputs($zeiger, „$eintrag \n $alt“);
//Datei schließen
fclose($zeiger);
}
}
}
$formular ="
Bitte füllen Sie alle Felder aus
(eMail und Homepage muß nicht, wäre aber schön):
Neuen Eintrag erstellen
Name: *
$msg_name
eMail:
$msg_email
Homepage:
Eintrag: *
$msg_nachricht
* Pflichtfelder
";
if ($op „check“ ) {
echo $formular;
}
if ($op == „check“) {
if ($check_err) echo $formular;
}
?>
Schönen Gruß,
Rudy
Grüße zurück,
Kerstin