Sessions fast am Ziel - Stichwort überschreiben
ulimativ
- php
0 Harry
Also nochmal eine kleine aber feine Sache mit Sessions.
Ich hab ein Formular über drei Seiten und speichere die Werte in einer Session, um Sie alle am Ende zu verarbeiten.
So nun klappt das auch schon sehr gut, aber nun ist folgendes:
Wenn ich eine Fehleingabe im Formular gemacht habe dann werde ich aufgefordert zurückzugehen und meine Eingabe zu korrigieren. So nun korrigiere ich den Fehler auf der vorhergehenden Seite und korrigiere das entsprechende Formularfeld und gebe möchte, dass die Session-Variablen überschrieben werden. Doch das Überschreiben findet nicht statt, sondern es kommt der Fehler vom vorhergehenden Versuch. Wie überschreibe ich mein Einzelwert im in der Session gespeicherten Array. Geht das oder muss ich das über ein temporäres Array lösen ????
Hier nochmal die betreffende Seite, die überschreiben soll (gekürzt).
<?php
@session_start();
session_register(array("required");
$tmp_array=$HTTP_SESSION_VARS["required"];
?>
<html>
<head>
<title>conic freesaver</title>
</head>
<body>
<form name="form1" method="post" action="seite2.php">
<p>Ihr Firmenname:
<input type="text" name="required[Firma]" value="<?echo $tmp_array["Firma"]?>">
<br>
Ansprechpartner:
<input type="text" name="required[Ansprechpartner]" value="<?echo $tmp_array["Ansprechpartner"]?>">
<br>
<input type="submit" value="weiter..">
</p>
</form>
</body>
</html>
Holladiri
Also nochmal eine kleine aber feine Sache mit Sessions.
Wenn ich eine Fehleingabe im Formular gemacht habe dann werde ich aufgefordert zurückzugehen und meine Eingabe zu korrigieren. So nun korrigiere ich den Fehler auf der vorhergehenden Seite und korrigiere das entsprechende Formularfeld und gebe möchte, dass die Session-Variablen überschrieben werden. Doch das Überschreiben findet nicht statt, sondern es kommt der Fehler vom vorhergehenden Versuch.
Das Problem ist die Rangfolge der Variablen in PHP (Environment-Post-Get-Session). Die höchste Priorität haben dabei Session-Variablen, d.h. eine Session-Variable ist "mehr wert" als z.B. eine Post-Variable gleichen Namens. So wird z.B. verhindert, daß man beispielsweise eine Nutzerklasse (Admin/nicht) durch anhängen der passenden Variable in der URL ändern kann.
Die Lösung lese die Variable aus dem Array $HTTP_POST_VARS bzw. $_POST (http://www.php.net/manual/en/reserved.variables.php#reserved.variables.post) aus und überschreibe dann die Sessionvariable damit.
Ciao,
Harry