array-uebergabe mit sessions
herbert hennerman
- php
0 Andreas Görtz0 Tom0 herbert hennerman0 Tom0 herbert hennerman0 Tom
0 wahsaga
hi leudde!
ich hab hier so n ewig langes emailformular und auch n array.
das formular geht über 3 schritte, und nun weiß ich nicht, wie ich das array von einem formular zum nächsten weitergeben soll.
kann mit jemand helfen?
ich hab mir die sache mit den sessions mal angesehen und werd aber nicht wirklich schlau daraus...
Is das ansatzweise schonmal eher richtig:
<?php
//Starten einer neuen Session
@session_start();
//Auslesen der Daten und übergeben in array
$persdata = array($interests);
//Speichern des Arrays in der Session
$_SESSION['interests'] = $persdata;
?>
und der aufruf ist umgekehrt?
<?php
//Starten der Session
@session_start();
//Aufrufen des Arrays
$enddata = $_SESSION['interests'];
?>
ich bin totaler neuling mit sessions, und ich werd wie gesagt nicht schlau aus der literatur...
dank euch für die hilfe,
herbert
Hi,
ich hab hier so n ewig langes emailformular und auch n array.
das formular geht über 3 schritte, und nun weiß ich nicht, wie ich das array von einem formular zum nächsten weitergeben soll.
kann mit jemand helfen?
wenn das Array sensible Daten enthält, ist der Ansatz mit Sessions nicht verkehrt. Wenn dem nicht so ist, kannst du es mittels serialize() (http://de2.php.net/manual/de/function.serialize.php) in eine speicherbare Form bringen und in einem hidden-fields übertragen. Auf der nächsten Seite musst du dann unserialize() (http://de2.php.net/manual/de/function.unserialize.php) benutzen, um das Array zurückzubekommen.
Gruß,
Andreas.
Hello,
wenn das Array sensible Daten enthält, ist der Ansatz mit Sessions nicht verkehrt. Wenn dem nicht so ist, kannst du es mittels serialize() (http://de2.php.net/manual/de/function.serialize.php) in eine speicherbare Form bringen und in einem hidden-fields übertragen. Auf der nächsten Seite musst du dann unserialize() (http://de2.php.net/manual/de/function.unserialize.php) benutzen, um das Array zurückzubekommen.
Serialize() reicht nicht. Man muss es auch noch "HTML-kastrieren". Dafür reicht base64encode() -> base64decode().
@herbert:
Beide Lösungen enthalten etwas Wahrheit...
Der Begriff "eine neue Session starten" ist etwas gefährlich, da Du nicht genau weisst, ob die Session schon offen war und wie oft der Client die Startseite für den Vorgang aufruft (in einem eigenen Fenster). Da musst Du für Sicherheit sorgen.
Also sagen wir mal, die Session starten.
Nun schauen wir rein in die Sessiondaten, ob ein bestimmter Wert drinsteht.
$id_formular = zufallszahl();
if(isset($_POST["hid"]["id_form"]))
{
$id_formular = $_POST["hid"]["id_form"];
}
if(isset($_SESSION[$id_formular])
and ($_SESSION[$id_formular] == $id_formular))
{
# weitermachen
}
elseif(isset($_SESSION[$id_formular]))
{
# warnung ausgeben, dass schon ein Vorgang dieser Art läuft
# wollen Sie trotzdem weitermachen?
# neue Formular-ID einstanzen
# weitermachen
}
else
{
# Startvorang einleiten, Erstausgabe
# <input type="hidden" name ="hid[id_form]" value="$id_formular">
}
Je nach Fall kannst Du dann mit den Sessiondaten weiterverfahren.
Wenn das ganze mehrseitig wird, muss man noch die Seitennummer in der
Session unter der Formular-ID ablegen und ebenfalls abfragen.
Liebe Grüße aus http://www.braunschweig.de
Tom
hmm...
ja, das sieht gut aus...
Aber aus diesen Manuals kann ich mir nix rausziehen, ich weiß nicht, is irgendwie nicht gut verständlich für mich...
ich habs jetzt so:
$var ist das array, ich schicks dann per formular weiter,
<input type="hidden" name="serdata" value="<?php print $ser_empf = serialize($var);?>">
und da hätt ichs so gemacht:
$empf = unserialize ($serialize);
print "$empf";
aber nix geht...
ich steh irgendwie total daneben...
danke für die hilfe!!
Hello,
$_var ist das array, ich schicks dann per formular weiter,
$_hid = base64encode(serialize($_var));
<input type="hidden" name="hid[_hid]" value="<?php echo $_hid; ?>">
und in der nächsten Seite:
$_var = unserialize(base64decode($_POST["hid"]["_hid"]));
echo "<pre>";
print_r($_var);
echo "</pre>";
aber nix geht.
und alles wird gut...
Liebe Grüße aus http://www.braunschweig.de
Tom
lieber tom!
danke für deine "DAU-Erklärung", das hilft mir extrem gut, zu verstehen wei es funktioniert.
leider hats auch das nicht gebracht bei mir... ;((
da kommt nix, im quellcode seh ich auch nix, wenn er ausgeführt wird...
mir fehlt totaaaal der plan...
Hello,
da kommt nix, im quellcode seh ich auch nix, wenn er ausgeführt wird...
Was geht denn nicht?
Welche Debug-Möglichkeiten hast Du schon benutzt?
Kommen fehlermeldungen?
Hast Du das Formular auch per POST weitergeschickt oder hast Du einen Link aufgerufen? Dann werden keine Hidden-Felder weitergereicht. Dafür muss man dann am besten Sessions benutzen.
Liebe Grüße aus http://www.braunschweig.de
Tom
hi,
ich hab hier so n ewig langes emailformular
dort liegt das problem - kein besucher füllt gerne "ewig lange" formulare aus.
setze also hier an, und beschränke dich ein wenig in deiner datensammelwut.
gruss,
wahsaga