phpbar.de logo

Mailinglisten-Archive

[php] form + session

[php] form + session

Björn Schotte php_(at)_phpcenter.de
Wed, 16 Jan 2002 16:29:25 +0100


* Barbara Griem wrote:
> Also ich bin an der Geschichte auch gescheitert, sind die
> Variablen einmal in der Session gespeichert, werden sie auch
> bei erneutem registrieren nicht überschrieben (jedenfalls

Schauen wir uns einmal an, wann die in der Session registrierten
Variablen ins Spiel kommen:


Request an den Server
      |
      |
      V
GET-/POST-/Cookie-Parameter
als PHP-Variablen
      |
      |
      V
Session-Variablen Import


Aha. Hast du ein Formular mit einem Input, dessen Name
"strasse" heißt und du hast eine in der Session registrierten
Variable "strasse" (vom vorherigen Submit des Formulars), so
sieht das folgendermaßen aus:


Request an den Server
     |
     |
     V
POST-Request mit Variable
strasse="Neue Strasse 5" => $strasse="Neue Strasse 5"
     |
     |
     |
     V
Session-Variablen Import
strasse="Alte Strasse 7" => $strasse="Alte Strasse 7"


Wie ersichtlich ist, überschreibt das Session-System blöderweise
die von uns neu eigegebenen Daten aufgrund eines Design-Fehlers
in unserer Applikation.

Was ist also zu tun? Zunächst einmal muß die in der Session
registrierten Variable anders lauten als die des Formulars.
Für das Formular nehme man fstrasse, für die Session-Variable
bleibt es bei strasse.

Dann kann man bei erneutem Submit machen:

<?php
session_register("strasse");

/**
* eventuelles Validieren von $fstrasse auf ungültige
* oder gefährliche Eingaben
*/
....

$strasse = $fstrasse;
?>

Und schon kann man die in der Session registrierte Variable
überschreiben.

Beim Anzeigen des Formulars, also um die bereits einmal ein-
gegebenen Daten anzuzeigen, kann man folgendes machen:

print "<input type='text' name='fstrasse' value='".htmlspecialchars($strasse)."'>";

HTH, Björn.
-- 
PHP-Schulungen in Frankfurt und München!

Mehr Informationen? >>> mailto:bjoern_(at)_thinkphp.de


php::bar PHP Wiki   -   Listenarchive