Logistik-Problem mit header()

Moin.

Heute habe ich mal ein Problem und hoffe, dass Ihr mir auf die Sprünge helfen könnt.

Die Frage wird sein, wie ich nach dem Eintrag eines Datensatzes in die Datenbank eine Weiterleitung machen kann, um zu verhindern, dass jemand über die History wieder auf die Seite kommt oder die Seite neu lädt, und dass dadruch der Datenbank-Eintrag nochmal (und ggfs. zu einem ungünstigen Zeitpunkt) gemacht wird.

Normalerweise ist das alles ganz einfach.
Man hat ein Affenformular, wenn das Formular abgeschickt wird, wird die Seite selbst wieder aufgerufen, vor der ersten Ausgabe (i.e. vor dem Doctype) werden die Formularinhalte geprüft, dann wird auch der DB-Eintrag gemacht und dann ruft man header(„Location: xxx“); auf.
-> Problem gelöst.

Aber hier ist es anders gestrickt: Ich habe eine einzige index.php, in der die verschiedenen Seiteninhalte irgendwo im body includet werden. D.h. die Prüfung auf Formularinhalte passiert auch erst in dem includeten File, also nachdem bereits Ausgaben gemacht wurden.

Weiterleitungen per JavaScript will ich nicht.

Weiterleitungen mit header() kann ja an sich ich nur in meiner index-Datei machen. Die weiß aber nichts von dem, was die verschiedenen Seiten so machen werden (Benutzerregistrierung, Benutzer ändern, usw.).

Sind die Lösungen wirklich nur:
a) entweder alles umstellen, dass jede Seite ihre eigene PHP-Datei aufruft und nicht alles über ein zentrales index-Script geregelt und includet wird.
b) Alle möglichen Aktionen, die weitergeleitet werden sollen, direkt im index-Script abfangen und bearbeiten (das würde aber auch bedeuten, dass bei einer Änderung eines Datensatzes nicht nur das eigentliche Eintragen in die DB im index.php gemacht werden muss, sondern auch die Prüfung der Formularinhalte. D.h. ich müsste die ganze Logik, die jetzt in einem includeten Script passiert, ins index.php mit reinschreiben
Aber was ist da aufwändiger? a oder b?

Ich arbeite dabei mit Sessions und habe schon überlegt, ob es einfachere Lösungen gibt, wenn ich bestimmte Daten in der Session ($_SESSION) ablege?

Ich hoffe, das Problem kommt einigermaßen rüber? Alle Lösungen, die mir einfallen, bedeuten, dass ich quasi alles komplett umstricken müsste und das will ich irgendwie vermeiden.

Bin über alle Anregungen dankbar. Wenn noch Informationen fehlen, bitte fragen, dann werde ich versuchen, diese nachzuliefern.

Vielen Dank fürs Lesen,
-Efchen

Hi,

bleibt eigentlich nur, dass Du jedem Formular eine eindeutige ID gibst. Sobald ein Formular abgearbeitet ist, ist die ID nicht mehr gültig.

h♥rzlichen Gruß
Nitya

Moin,

ich bin mir nicht sicher, ob ich Dich nicht verstehe oder ob ich mein Problen nicht richtig geschildert habe.

Ich probiers nochmal detaillierter:

Ich habe eine index.php, ganz normaler Aufbaue einer Seite.
Meine Unterseiten werden über „xxx.html“ aufgerufen und per mod_rewrite an „index.php?page=xxx“ weitergegeben. In index.php gibts dann im body ein include, das die Seite xxx einbindet.

Ob das Formular ausgegeben werden soll, ob die Formulareingaben überprüft werden müssen, oder ob die Daten in die Datenbank gespeichert werden, passiert hier im Includefile „xxx“, also nicht in index.php. Dadurch wurden bereits Seitendaten aufgebaut, HTTP-Header können nicht mehr gesendet werden.
Und in dieser Seite „xxx“ werden dann irgendwann die Daten in die Datenbank eingetragen und danach hätte ich gerne eine Weiterleitung auf eine andere Seite. Aber nicht mit HTML oder JavaScript.

Ich hoffe, das ist verständlicher? Geht das überhaupt? Ich sehe gerade nicht, wie eine ID für jede Seite/jedes Formular mir da weiter helfen kann, denn ich muss die Weiterleitung mittels HTTP-Header ja in der index.php machen, aber der Eintrag in die Datenbank erfolgt erst später im Script.

Danke fürs Zuhören.
-Efchen

*freu mich drauf*

jupp … hast den per PN Hinweis nicht gerafft und warst zu stolz nachzufragen … so ist das mit den endlos Standard-Saber-Heimern … übrigens hat das nichts mit „logistik“ zu tun … LMAO

h♥rzlichen Gruß
Nitya

hast den per PN Hinweis nicht gerafft

„per PN Hinweis“? Wovon redest Du?

Hallo zusammen.

Ich habe das Problem jetzt gelöst, indem ich meine Verarbeitungen, bei denen ich weiterleiten will, in meine index.php packe.

Danke für die zahlreichen und vor allem hilfreichen Antworten!

Grüße,
-Efchen