rene: Sessions unter function

Hallo!
Kleine Verständnisfrage: Wenn ich z.B. am Anfang eines Scripts session_register("versuch"); sage, kann ich dann auch auf $versuch zugreifen, wenn diese innerhalb eines function-Bereiches benötigt wird, der mit dem include-Befehl eingegliedert wird?

Vielleicht eine doofe Frage, aber bei mir sieht es im Moment so aus, dass ich innerhalb eines Scripts auf z.B. $versuch zugreifen kann. Binde ich jetzt ein anderes Script ein, kann ich immer noch auf $versuch zugreifen. Komme ich aber innerhalb des function-Bereiches geht das nicht mehr. Wieso???

Danke! - mit der Bitte um Nachsicht.

  1. Hallo,

    Kleine Verständnisfrage: Wenn ich z.B. am Anfang eines Scripts session_register("versuch"); sage, kann ich dann auch auf $versuch zugreifen, wenn diese innerhalb eines function-Bereiches benötigt wird, der mit dem include-Befehl eingegliedert wird?

    Du solltest _immer_ mit $_SESSION['versuch'] auf die Variable zugreifen.
    Das geht ueberall, auch in Funktionen, ohne weiteres, da $_SESSION eine
    sogenannt "superglobale" Variable ist.
    http://www.php.net/manual/en/reserved.variables.php

    Uebrige Variablen von ausserhalb einer Funktion kannst Du auch
    in der Funktion drin verwenden, wenn Du sie am Anfang der
    Funktion mit dem Befehl "global" verfuegbar machst:

    $test="blabla";

    function bla()
     {
      echo $test; // Keine Ausgabe, da die Variable nicht definiert ist
      global $test;
      echo $test; // Ausgabe: blabla
     }

    Alternativ koenntest Du in dem Fall $_GLOBAL['test'] verwenden.

    Lies mal im Manual den Abschnitt "Geltungsbereich von Variablen":
    http://www.php.net/manual/de/language.variables.scope.php

    Gruesse,

    Thomas

    1. Hallo,

      Alternativ koenntest Du in dem Fall $_GLOBAL['test'] verwenden.

      Sorry, wie Michael Nagler richtig schrieb, muss es heissen: $GLOBALS['test']

      http://www.php.net/manual/en/reserved.variables.php#reserved.variables.globals

      Gruesse,

      Thomas
        der jetzt definitiv ins Bett muss;-)

  2. Hi!

    Ganz einfach: innerhalb einer Funktion sind globale Variablen ausgeblendet. Darum musst du eine globale Variable extra definieren:

    function tuwas()
    {
      global $versuch; // eine möglichkeit

    $a = $GLOBALS["versuch"]; // andere möglichkeit
    }

    Mit freundlichen Grüßen,
    Michael Nagler