benni: session-problem

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

  1. 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

    --
    >>Nobody will ever need more than 640k RAM!<<
    1981 Bill Gates
    1. 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

      1. 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

        --
        >>Nobody will ever need more than 640k RAM!<<
        1981 Bill Gates
        1. 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

          1. 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

            --
            >>Nobody will ever need more than 640k RAM!<<
            1981 Bill Gates
            1. 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

              1. 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

                --
                >>Nobody will ever need more than 640k RAM!<<
                1981 Bill Gates
                1. 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

      2. hiho,

        wieso überschreibst du die Variable nicht ganz normal: $_SESSION['site'] = $neuerwert;
        Das funktioniert bei mir ganz wunderbar.

        Marc