Hallo Zusammen!
Ich entwickle gerade ein Gästebuch, und verwende dafür ein Affenformular.
Die Seite ist folgendermaßen aufgebaut:
index.php
in der content.php werte ich dann die variable do aus:
gb.php:
Standardmässig wird das Formular in aus der gb.php (hab ich jetzt nicht in den QC eingebaut) angezeigt.
Tritt bei der plausibilisierung ein Fehler auf, werden die Boxen rot umrandet (wenn z.B. der Name vergessen wurde).
Damit der Eintrag bei einer aktualisierung nicht 2x oder öfters erstellt wird arbeite ich mit der Modifikation des Headers.
Und genau hier liegt das Problem:
Da ich ja in der index.php bereits HTML code ausgebe und erst später die content.php includiere erhalte ich die Fehlermeldung, dass der Header nicht mehr modifiziert werden kann, da er bereits gesendet wurde.
Hat jemand eine elegante Lösung?
Was ich mir bisher selbst überlegt hätte:
Danke für Eure Hilfe!
Grüße
Malungo
Ich entwickle gerade ein Gästebuch, und verwende dafür ein Affenformular.
Die Seite ist folgendermaßen aufgebaut:
index.php
PHP-Code:
<html>htmlcode für header, menüs etc.
include('content.php');
htmlcode für footer etc.
</html>
PHP-Code:
...
switch($do) {
case 'gb':
include('gb.php');
break;
...
PHP-Code:
if (isset($_POST["text"])) {
plausibilisierung;
eintrag in db schreiben;
header('Location: index.php?do=gb&ok=1');
}
if (isset($_GET["ok"])) {
echo ("Vielen Dank für Ihren Eintrag!");
}
Tritt bei der plausibilisierung ein Fehler auf, werden die Boxen rot umrandet (wenn z.B. der Name vergessen wurde).
Damit der Eintrag bei einer aktualisierung nicht 2x oder öfters erstellt wird arbeite ich mit der Modifikation des Headers.
Und genau hier liegt das Problem:
Da ich ja in der index.php bereits HTML code ausgebe und erst später die content.php includiere erhalte ich die Fehlermeldung, dass der Header nicht mehr modifiziert werden kann, da er bereits gesendet wurde.
Hat jemand eine elegante Lösung?
Was ich mir bisher selbst überlegt hätte:
- ein ob_start(); zu Beginn der index.html; das funktioniert, allerdings habe ich gehört, dass dadurch die Seite langsamer wird!? Und da ich eine performante Seite (viele User werden sich einloggen etc.) bauen will, wäre das nicht das Richtige
- ich könnte beim absenden des formulars eine eigene gbpost.php aufrufen in der ich keinen HTML Code ausgebe, sondern nur prüfe ob der Eintrag erstellt wurde, und ggf. weiterleite (mit header(Location...)); allerdings hat dies zum Nachteil dass ich die Fehlermeldungen wieder an die index.php übertragen müsste und diese dann auswerten müsste (in der gb.php)
- Ein SELECT an die DB schicken und prüfen ob genau dieser Eintrag schon vorhanden ist. Gefällt mir aber persönlich nicht soo gut
Danke für Eure Hilfe!
Grüße
Malungo

Kommentar