Session-Problem
Sylvia
- php
0 Christian Seiler0 Sylvia0 Christian Seiler0 Jan0 Christian Seiler0 Jan0 Christian Seiler0 Jan
Hallöchen :)
Ich habe ein Problem mit Sessions... und zwar werden die Variablen nicht auf die nächste Seite übergeben.
Das hier ist ein Ausschnitt aus meiner seite1.php:
<?
session_register("customer");
session_start();
if($name) {
header ("Location: seite2.php");
} else {}
?>
.... hier kommt html code ....
<form action="<?php echo $PHP_SELF; ?>" method="post" name="form1">
<input name="name" type="text" style="width:200px;" value="<?php echo $name; ?>">
<input type="submit" name="Submit" value="Weiter zu Schritt 2">
</form>
So ... wenn man nun im Formular $name ausfüllt und auf Submit klickt, wird die Seite erneut abgearbeitet. Da oben jedoch eine if-Abfrage steht, springt er in diese rein und wird durch header() auf die seite2.php geleitet.
Dort wird am Anfang auch wieder die Session eröffnet:
<?php
session_start();
aber wenn ich mal echo $name; ausführen lasse, muss ich feststellen, dass die Variable leer ist.
Woran liegt das? Hab ich irgendwas übersehen?
Liebe Grüsse
Sylvia
Hallo Sylvia,
Ich fasse mal etwas zusammen, vielleicht wird es dann deutlich:
session_register("customer");
[...]
aber wenn ich mal echo $name; ausführen lasse, muss ich feststellen, dass die Variable leer ist.Woran liegt das? Hab ich irgendwas übersehen?
Natürlich ist die Variable leer, Du hast ja auch bloß die Variable $customer registriert und nicht $name.
Außerdem empfehle ich, von globalen Variablen abschied zu nehmen und lieber $_GET, $_POST, $_COOKIE und $_SESSION zu verwenden, näheres findest Du im Archiv. (http://selfsuche.teamone.de/)
Viele Grüße,
Christian
Natürlich ist die Variable leer, Du hast ja auch bloß die Variable $customer registriert und nicht $name.
Hi :)
achso, ich dachte immer, wenn man eine Session eröffnet, werden alle Variablen weitergegeben... ich müsste also jede Variable mit session_register(); registrieren? :-)
Außerdem empfehle ich, von globalen Variablen abschied zu nehmen und lieber $_GET, $_POST, $_COOKIE und $_SESSION zu verwenden, näheres findest Du im Archiv. (http://selfsuche.teamone.de/)
Hmm ja, das ist noch n anderes Thema, das wurde mir schon öfter gesagt... ich werd's zukünftig anders machen. Besten Dank jedenfalls ;)
Grüsse
Sylvia
Hallo Sylvia,
ich müsste also jede Variable mit session_register(); registrieren? :-)
Jede Variable, die Du brauchst.
Außerdem: wenn Du *kein* $_GET/... verwendest, dann bekommst Du Probleme, denn wenn Du die Variable $name registrierst, dann kannst Du nach dem ersten Registrieren auf kein Formular mehr zugreifen, dass ein Feld mit dem Namen "name" besitzt, denn Sessionvariablen überschreiben _immer_ GET/POST/COOKIE Variablen.
Viele Grüße,
Christian
Hallo Christian,
ich klink mich hier mal ein da ich auch gerade probleme mit Variablen und Session habe.
Ich habe mir mal die aktuelle PHP Version installiert und register_globals auf off
gestelltund will nun diverse sachen umschreiben, dass sie auch so funktionieren.
Und da hängt es nun bei dem Sessionkram.
Und zwar komme ich nicht an die in der Session gespeicherten Daten ran, ich bringe
diverse Daten mit $_SESSION=$_POST['bla']; in die Session, die sind nun auch da vorhanden.
Wie ich nun gelesen habe komme ich mit $_SESSION['bla'] an die Daten aber das klappt so nicht.
Ich brauche die Daten für diverse if-Abfragen, zb:
if($_SESSION['bla']==$xyz){...}
Was ist da falsch?
Gruss, Jan aus Dresden
Hallo Jan,
Ich stelle mal um:
Was ist da falsch?
[...]
$_SESSION=$_POST['bla'];
Es sollte $_SESSION['bla'] = $_POST['bla']; heißen. Wenns das nicht ist, dann poste mal etwas mehr Beispielcode.
Viele Grüße,
Christian
Hallo,
Es sollte $_SESSION['bla'] = $_POST['bla']; heißen. Wenns das nicht ist, dann poste
Im posting war es ein Schreibfehler, ich habe es so wie du korregiertest.
Ja, viel mehr Code ist da nicht (relevant):
session_start();
$_SESSION['var1'] = $_POST['var1'];
if ($_POST['var1']==$key or $_SESSION['var1']==$key) {
mache das
}
else{
mache was anderes
}
Alles spielt sich in einer php Datei ab.
Bei erstem Seitenaufruf wird ein Formular ausgegeben mit welchem diverse Daten mit
Post an die selbe Datei geschickt werden.
Die var1 kommt in die Session (klappt auch, sie steht in der Sessiondatei in
meinem tmp Verzeichnis), im "mache das bereich" gibt es Links an die wird die Sesson_id
angehangen, wird der Link betätigt soll man wieder in den "mache das bereich" kommen,
eben über die gespeicherte var1 und das passiert aber nicht.
Es werden auch noch ander Variablen in der Session gespeichert, die im "mache das bereich"
benötigt werden aber soweit komme ich ja gar nicht erst.
Gruss, Jan aus Dresden
Hallo Jan,
$_SESSION['var1'] = $_POST['var1'];
Dieser Code darf nicht immer ausgeführt werden, denn wenn $_POST['var1'] leer ist, dann wird halt was leeres in $_SESSION['var1'] geschrieben und der untere Bereich wird nicht ausgeführt.
Also besser:
session_start ();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$_SESSION['var1'] = $_POST['var1'];
}
(oder so etwas in der Art)
Viele Grüße,
Christian
Hallo,
session_start ();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$_SESSION['var1'] = $_POST['var1'];
}
Ja, das war der Fehler.
Ich habe, eine für das Script, passendere Bedingung genommen und es funktioniert tadellos.
Vielen Dank!
Gruss, Jan aus Dresden