![]() |
[PHP+HTML] Mehrseitige Formulare mit Session
Hi,
ich habe ein mehrseitiges HTML-Formular mit verschiedenen Input-Feldern. Die Werte der Input-Felder werden in Sessions gespeichert. Das funktioniert auch wunderbar. Doch jetzt will ich, dass der User nicht nur das Formular abschicken kann, sondern auch zum vorherigen zurückkehrern kann, natürlich müssen die letzten Eingaben wieder ins Input-Feld aus der Session zurückgeschrieben werden. Auch das funktioniert auch recht gut. Ich schreibe einfach die entsprechende Session-Variabel ins VALUE rein. Doch wenn ich dann das Formular noch einmal abschicke, kommt nicht der richtige Wert an, sondern immer nur der Value-Wert, der zuvor angegeben wurde. :gruebel: Ich verstehe das irgendwie überhaupt nicht, da es bisher an anderen Stellen immer geklappt hat (zwar nicht mit Session, aber ich denke hier handelt es sich um ein HTML-Problem). Könnt ihr mir das erklären und vielleicht auch Lösungsansätze geben? Quellcodes: HTML-Template (verkürzt):
Code:
Zu gehörige PHP-Seite:
<html>
<head> <link rel=stylesheet type="text/css" href="style.css"> <title>Webbaukasten</title> </head> <body> <h1>Webbaukasten</h1> <h2>Kontaktdaten des Auftraggebers:</h2> <form method="post" name="kontaktdaten" action="serverauswahl.php"> <center><table style="border-style: dotted; border-width: 1px; border-color: darkgray;" cellpadding="1" cellspacing="1"> <tr> <td class="zeile1" width="150">Branche:</td> <td class="zeile2" width="150"><input type="text" name="auftraggeber_branche" value="<%auftraggeber_branche%>"></td> </tr> <tr> <td class="zeile1" width="150">Vorname:</td> <td class="zeile2" width="150"><input type="text" name="auftraggeber_vname" value="<%auftraggeber_vname%>"></td> </tr> <tr> <td class="zeile1" width="150">Nachname:</td> <td class="zeile2" width="150"><input type="text" name="auftraggeber_name" value="<%auftraggeber_name%>"></td> </tr> <tr> <td class="zeile1" width="150">Telefon:</td> <td class="zeile2" width="150"><input type="text" name="auftraggeber_telefon" value="<%auftraggeber_telefon%>"></td> </tr> <tr> <td class="zeile1" width="150">Durchwahl:</td> <td class="zeile2" width="150"><input type="text" name="auftraggeber_durchwahl" value="<%auftraggeber_durchwahl%>"></td> </tr> <tr> <td class="zeile1" width="150">Telefax:</td> <td class="zeile2" width="150"><input type="text" name="auftraggeber_telefax" value="<%auftraggeber_telefax%>"></td> </tr> <tr> <td class="zeile1" width="150">E-Mail:</td> <td class="zeile2" width="150"><input type="text" name="auftraggeber_mail" value="<%auftraggeber_mail%>"></td> </tr> </table> </center> <div align="right"><input type="submit" value="weiter"></div> </form> </body> </html>
Code:
Und die PHP-Seite auf die weitergeleitet wird beim Abschicken des Forms
<?php
include("klassen.php"); include("templateparser.php"); @session_start(); // Daten in aktuelle Seite einfügen... $static['auftraggeber_branche'] = $HTTP_SESSION_VARS['auftraggeber_branche']; $static['auftraggeber_vname'] = $HTTP_SESSION_VARS['auftraggeber_vname']; $static['auftraggeber_name'] = $HTTP_SESSION_VARS['auftraggeber_name']; $static['auftraggeber_telefon'] = $HTTP_SESSION_VARS['auftraggeber_telefon']; $static['auftraggeber_durchwahl'] = $HTTP_SESSION_VARS['auftraggeber_durchwahl']; $static['auftraggeber_telefax'] = $HTTP_SESSION_VARS['auftraggeber_telefax']; $static['auftraggeber_mail'] = $HTTP_SESSION_VARS['auftraggeber_mail']; $static['ansprechpartners_vname'] = $HTTP_SESSION_VARS['ansprechpartners_vname']; $static['ansprechpartners_name'] = $HTTP_SESSION_VARS['ansprechpartners_name']; $static['ansprechpartners_telefon'] = $HTTP_SESSION_VARS['ansprechpartners_telefon']; $static['ansprechpartners_mail'] = $HTTP_SESSION_VARS['ansprechpartners_mail']; $tpl= new templateparser("templates/index.tpl"); @$tpl->addStaticValues($static); echo $tpl->getparsedTemplate(); ?>
Code:
Vielen Dank schon einmal!
<?php
<?php include("klassen.php"); include("templateparser.php"); @session_start(); $tpl= new templateparser("templates/serverauswahl.tpl"); // Kontaktdaten in Session sichern: session_register('auftraggeber_branche'); session_register('auftraggeber_vname'); session_register('auftraggeber_name'); session_register('auftraggeber_telefon'); session_register('auftraggeber_durchwahl'); session_register('auftraggeber_telefax'); session_register('auftraggeber_mail'); session_register('ansprechpartners_vname'); session_register('ansprechpartners_name'); session_register('ansprechpartners_telefon'); session_register('ansprechpartners_mail'); // aktuelle Seite mit Daten fuellen: //[...] @$tpl->addStaticValues($static); echo $tpl->getparsedTemplate(); ?> |
Re: [PHP+HTML] Mehrseitige Formulare mit Session
:wall: So ich habe es. Ich wusste nicht dass man die Variabeln nicht nur über $HTTP_SESSION_VARS['var'] verfügbar sind, sondern auch über $var selber. Hier wurden natürlich alle Variabel überschrieben... So damit wäre das Problem gelöst... |
Re: [PHP+HTML] Mehrseitige Formulare mit Session
So.
Jetzt weiß ich zwar wo der Fehler ist, aber ich habe immer noch Probleme es zu beheben. Ich könnte die Variabel zwar beim Anzeigen der Seite wieder killen (session_unregister), aber wenn man dann Aktualisieren drückt ist alles weg. Außerdem ist das sicherlich nicht die feinste Art... Meine Frage wie bekomme ihc die Variabel: $HTTP_POST_VARS['var'] in session_register(); rein? Sesison_register braucht ja nicht die Variabel selber, sondern den Namen der Variabel. Kurz:
Code:
funktioniert nicht!
session_register($HTTP_POST_VARS['var']);
Gibt es da eine saubere Lösung (außer die Session-Variabel zu löschen)? Vielen Dank schon mal! |
Re: [PHP+HTML] Mehrseitige Formulare mit Session
weise doch einfach einer anderen variable den $HTTP_POST_VARS['var'] wert zu und schreibe diese in die session?!
|
Re: [PHP+HTML] Mehrseitige Formulare mit Session
Ja das geht relativ gut.
BTW:
Delphi-Quellcode:
Ist aktueller und wird empfohlen.
$_POST
$_SESSION $_GET $_FILES Czapie. |
Re: [PHP+HTML] Mehrseitige Formulare mit Session
Zitat:
Aber irgendwie ist das nur ein (dreckiger) Workaround. Aber mit $_session geht das wie ich jetzt herausgefunden habe viel besser.
Code:
Ist wohl hier die beste Lösung ;-)
$_SESSION['var'] = $var;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz