session-problem
benni
- php
0 David Tibbe0 benni0 David Tibbe0 benni0 David Tibbe0 benni0 David Tibbe0 benni
0 AllesMeins
Hi!
also ich hab ne Seite, über deren Inhalt mit der variable $site entschieden wird. also schlichtweg mit
include("includes/".$site.".inc.php");
die inkludierten dateien enthalten jedoch auch variabeln und geben sie über die url weiter. ($action... if $action = add { blablab } etc...
jetzt hab ich mir folgendes gedacht: dass ich nicht jedesmal in $site.inc.php die variable $site, die mit der (inkludierten) seite ansich ja nix zu tun hat, mit in die url stecken muss, stecke ich die variable $site in eine (sowieso schon vorhandene) session.
das geht auch - ein mal. wenn ich auf den nächsten link klicke (also ne andere $site habe), wird die alte trotzdem angezeigt - also anscheinend die session-variable nicht richtig überschrieben.
mein code ist folgender:
if($_SESSION["site"]!=$site) {
session_unset($_SESSION["site"]);
$_SESSION["site"] = $site;
}
es geht aber eben leider nicht...
hat jemand ne ahnung, warum?
viele grüße,
benni
Hallo benni
Was sagen bei dir Debug-Ausgaben?
session_unset($_SESSION["site"]);
Du hast im Manual gelesen, was dort zu session_unset() im Bezug auf
$_SESSION[] steht?
Und ich nehme einfach einmal so an, dass du zuvor $site mittels $_GET['site']
oder entsprechend ausliest.
Grüße
David
Hi!
Was sagen bei dir Debug-Ausgaben?
Du meinst Fehlermeldungen? kommen keine...
session_unset($_SESSION["site"]);
Du hast im Manual gelesen, was dort zu session_unset() im Bezug auf
$_SESSION[] steht?
oha... naja. dann ist das dabei rausgekommen:
if($site!="") {
if($_SESSION["site"]!=$site) {
unset($_SESSION["site"]);
$_SESSION["site"] = $site;
}
}
Und ich nehme einfach einmal so an, dass du zuvor $site mittels $_GET['site']
oder entsprechend ausliest.
sag ich jetzt nix zu... :/
viele grüße,
benni
Hallo benni
Du meinst Fehlermeldungen? kommen keine...
Nope, ich meine mehr einmal $site und $_SESSION['site'] ausgeben lassen,
ggf. auf Whitespaces bei jener Ausgabe überprüfen usw.
if($site!="") {
Füge hier ein echo ein um zu schauen, ob dieser Zweig "ausgeführt" wird
if($_SESSION["site"]!=$site) {
hier ebenfalls.
unset($_SESSION["site"]);
$_SESSION["site"] = $site;
}
}
Grüße
David
Hallo benni
Du meinst Fehlermeldungen? kommen keine...
Nope, ich meine mehr einmal $site und $_SESSION['site'] ausgeben lassen,
ggf. auf Whitespaces bei jener Ausgabe überprüfen usw.
gute idee... also folgendes:
$SESSION_["site"] wird richtig gesetzt.
$site bleibt allerdings gleich, auch wenn ich per href="index.php?site=pics" einen neuen wert übermittle...?!
viele grüße,
benni
Hallo
$site bleibt allerdings gleich, auch wenn ich per href="index.php?site=pics" einen neuen wert übermittle...?!
Ah, jetzt dürfte es klar sein. Du hast r_g = on, selbst Schuld ;)
Anscheinend hat das $site aus der Session gegenüber dem aus dem Get-Parameter
Vorrang. Verwende daher _konsequent_ die Superglobals.
Grüße
David
Ah, jetzt dürfte es klar sein. Du hast r_g = on, selbst Schuld ;)
Anscheinend hat das $site aus der Session gegenüber dem aus dem Get-Parameter
Vorrang. Verwende daher _konsequent_ die Superglobals.
das heißt, es funktioniert, wenn ich register_globals ausschalte und statt $site $_GET["site"] verwende?
viele grüße,
benni
Hallo benni,
Ohne mich für die Aussage haftbar machen zu wollen: ja ;)
Allerdings reicht es auch, wenn du anstatt $site $_GET['site'] verwendest.
Dann ist schließlich genau geklärt, woher die Variabel kommt (die Idee hinter
all dem ganzen) und wir nicht verwechselt.
Grüße
David
es geht, juhu ^^
sooo... ich glaub, jetzt fang ich echt endlich an, $_GET zu verwenden... (obwohl ich mir das schon öfters gesagt hab ;-) ).
viele grüße,
benni
hiho,
wieso überschreibst du die Variable nicht ganz normal: $_SESSION['site'] = $neuerwert;
Das funktioniert bei mir ganz wunderbar.
Marc