Sessions-Problem
Andi123
- php
0 lulu
Hallo,
ich erstelle ne session.
klappt alles fein. auch die uebergabe an die anderen seite und so.
jetzt frage ich auf jeder seite ab, ob die in der Session gespeicherte Variable nen Wert hat, wenn ja, gehts normal weiter, wenn nicht, gehts zurueck zum Anmeldebildschirm.
Jetzt moechte ich genau diese Abfrage in ne php-function auslagern,
naemlich genau diese Zeilen hier:
---schnipp---
session_start();
if (empty($u_id))
{
header ("Location: http://www.domain.de/admin/index.php");
}
---schnipp---
(Kurzer Hinweis: wenn ich diese Zeilen in jeder PHP-Datei habe um zu pruefen, ob die Variable belegt ist, klappt alles,wie gewuenscht)
So wenn ich dann die Function, die ich ueber eine INCLUDE-Datei
anspreche, aufrufe, funktioniert genau der oben angegeben Teil nicht mehr.
Merkwuerdig fuer mich ist aber, das die in der Session gespeicherte
Variable "$u_id" aber trotzdem auf der, die Function aufrufenden,
Seite zur Verfuegung steht.
Noch mal ne kurze Erklaerung, was passiert:
Also in der ausgelagerten Function scheint der Befehl "session_start()" ausgefuehrt zu werden.
Das Testen auf diese Variable in der Function selber bzw. eine Ausgabe der Var. in der Function zeigt mir ein "leer" an.
Aber in der Datei, die die Function aufruft, steht die Var.
"$u_id" mit den erwarteten Wert wie gewollt zur Verfuegung.
Gibts da ne Erklaerung? Bzw. was muss mache ich falsch?
Vielen Dank
Andreas
Huhu Andreas
---schnipp---
session_start();
if (empty($u_id))
{
header ("Location: http://www.domain.de/admin/index.php");
}
---schnipp---
Wo wird denn $u_id initialisiert?
Wenn die Variable in der Session registriert ist, solltest Du
$_SESSION['u_id'] benutzen.
Und nach dem header noch ein exit(); ergänzen, damit die Ausführung des Skriptes beendet wird.
Viele Grüße
lulu
Wo wird denn $u_id initialisiert?
Wird eine Seite "vorher" wie folgt erstellt...
---schnipp---
session_start();
session_register("u_id");
header ("Location: http://www.domain.de/admin/index2.php");
exit;
---schnipp---
Aber die Frage ist fuer mich eher, warum klappt das Sessionabfragen nicht in ner Function,sondern dort nur der session_start() aufruf?
Danke Andreas
Moin!
session_register("u_id");
session_register benutzt man nicht mehr.
Mach sowas:
$_SESSION['u_id'] = "wasauchimmer";
Und das fragst du dann später auch ab.
Aber die Frage ist fuer mich eher, warum klappt das Sessionabfragen nicht in ner Function,sondern dort nur der session_start() aufruf?
Vielleicht ein Scope-Problem? Global/lokal?
$_SESSION ist superglobal, darauf kannst du überall zugreifen, ohne Sonderaktionen starten zu müssen.
- Sven Rautenberg