Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP+HTML] Mehrseitige Formulare mit Session (https://www.delphipraxis.net/19286-%5Bphp-html%5D-mehrseitige-formulare-mit-session.html)

Alexander 31. Mär 2004 15:09


[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:
<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>
Zu gehörige PHP-Seite:
Code:
<?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();
?>
Und die PHP-Seite auf die weitergeleitet wird beim Abschicken des Forms
Code:
<?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();
?>
Vielen Dank schon einmal!

Alexander 31. Mär 2004 15:24

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...

Alexander 31. Mär 2004 15:37

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:
  session_register($HTTP_POST_VARS['var']);
funktioniert nicht!

Gibt es da eine saubere Lösung (außer die Session-Variabel zu löschen)?
Vielen Dank schon mal!

Meflin 31. Mär 2004 18:03

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?!

czapie 31. Mär 2004 18:09

Re: [PHP+HTML] Mehrseitige Formulare mit Session
 
Ja das geht relativ gut.

BTW:
Delphi-Quellcode:
$_POST
$_SESSION
$_GET
$_FILES
Ist aktueller und wird empfohlen.

Czapie.

Alexander 31. Mär 2004 18:34

Re: [PHP+HTML] Mehrseitige Formulare mit Session
 
Zitat:

Zitat von Meflin
weise doch einfach einer anderen variable den $HTTP_POST_VARS['var'] wert zu und schreibe diese in die session?!

Ja klar, das geht auch. HAbe ich mir auch schon überlegt...
Aber irgendwie ist das nur ein (dreckiger) Workaround.

Aber mit $_session geht das wie ich jetzt herausgefunden habe viel besser.
Code:
$_SESSION['var'] = $var;
Ist wohl hier die beste Lösung ;-)


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