Felix Riesterer: Formular soll nicht weiterleiten bei deaktiviertem JavaScript

Beitrag lesen

Lieber Tobi,

hast Du Dir das von mir verlinkte Beispiel zu einem Affenformular überhaupt angesehen? Darin sollten bereits einige Fragen Deinerseits geklärt werden.

Zusätzlich kannst Du versteckte Eingabefelder in ein Formular einbauen - je nachdem, was Dein Script gerade braucht.
<input type="hidden" name="geheim" value="secret" />

Mit solchen Feldern kannst Du zum einen bereits eingegebene Werte "mitführen", oder z.B. vermerken, dass Du eine Vorschau bereits bestätigen hast lassen. Der User sieht das nicht, klickt auf bestätigen, und der Server "weiß" nun, dass der User das schon zum zweiten Mal abschickt. Zur Sicherheit vor Bots kannst Du das mit einer Session begleiten, in der z.B. der Wert für name und value zufällig gewählt wird. In meinem GB-Script mache ich das so. Damit stellst Du sicher, dass der User das Eingegebene bestätigt.

Ein einfaches: "Sorry, aber du musst dein Problem schon genauer beschreiben, damit wir dir helfen können", hätte beim ersten mal auch gereicht.

Nö, dazu haben wir unsere Tipps für Fragende, die man über die FAQ erreichen kann. Als routinierter Forenbenutzer weißt Du ja, dass man tunlichst sich diese durchlesen und beherzigen sollte... ;-)

Ich, der ich ja nicht bescheid weiß, kann ja nicht genau wissen, welche Informationen man braucht.

Und wir, die wir nicht wissen, was Dir im Geiste vorschwebt, können ja nicht ahnen, dass Deine Problembeschreibung ungenau war, denn zu Deinem OP habe ich Dir im Grunde genommen vollständig geantwortet.

Ok, so weit, dass ich nicht immer ne neue URL aufrufen muss, hab ich bis ich meine letzte Antwort geschrieben hatte noch nicht gedacht.

Lies Dir bitte nocheinmal den von mir verlinkten Thread zu einem Affenformular durch! Die beiden Beispiele solltest Du unbedingt durcharbeiten!

Ja, das header-Problem ist natürlich eins in der Art, wie du es auf deiner Seite beschreibst. Und natürlich hast du auch recht, dass ich mit sessions nicht umgehen kann.

Alles Übung und Erfahrung. Da musste ich auch ganz klein und von vorne anfangen.

Aber auf die klassischen Fehler, wie Leerzeilen und co. hab ich das ganze schon geprüft. Was passiert denn genau, wenn ich mit header() die andere Seite aufrufe?

Du rufst überhaupt nix auf. Du sagst nur dem Browser, er solle nach dem Erhalt der Seite eine neue Seite anfordern (was möglicherweise ein weiteres Script aufruft), und zwar nach x Sekunden. Außerdem kannst Du mit der header()-Funktion alle möglichen HTTP-Kopfdaten senden, nicht nur die refresh-Angabe, sondern auch Cookie-Daten (wird vom Session-Mechanismus benötigt), MIME-Typ, Zeichensatzkodierung und noch viel mehr.

Wie kann es da überhaupt sein, dass schon ein header abgeschickt wurde?

In dem Moment wo Daten an den Browser gesendet werden (also das, was zum HTML-Dokument oder Bilddatei oder, oder, oder gehört), muss diesen der HTTP-Header vorausgehen. In dem Moment wo das geschehen ist, können natürlich nachträglich keine weiteren Header-Daten mehr gesendet werden. In diesem Falle ist der Aufruf der header()-Funktion sinnfrei und PHP quittiert das auch mit einer entsprechenden Warnung.

Oder muss ich eher auf die Seite schauen, die aufgerufen wird?

Nein, Du musst nur Dein Konzept überdenken - und gegebenenfalls vereinfachen.

Liebe Grüße,

Felix Riesterer.

--
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)