waki: Session in Funktion

Hallo,

habe folgendes Problem bei PHP-Version 4.3.0:

folgende Funktion wird z.B. bearbeitet:

function show_user() {
  echo "it";
}

Allerdings diese Funktion nicht - irgendwie wird die Session per Funktion nicht übergeben, sonst klappt die Session aber (z.B. bei einer Abfrage ohne Funktion):

function show_user() {
  if ($HTTP_SESSION_VARS["User"] == "Administrator") {
    echo "Admin";
  } else {
    echo "kein Admin"
  }
}

-> im Laufe des Sktipts:
show_user();

Trotz Session als "Admin" wird dies nicht erkannt und "kein Admin" ausgegeben - obwohl man als Admin eingeloggt ist, ohne Funktion klappt es nämlich:

if ($HTTP_SESSION_VARS["User"] == "Administrator") {
    echo "Admin";
  } else {
    echo "kein Admin"
  }

Folgendes möchte ich vermeiden (Übergabe des Parameters), weil es sonst zuviel Schreibarbeit wird, die ich mir ja mit der Funktion ersparen möchte, die Abfrage wird nämlich mehrmals in einem Skript gebraucht:

show_user($HTTP_SESSION_VARS["User");

Thx,
waki

  1. Hello,

    folgende Funktion wird z.B. bearbeitet:

    function show_user()

    {

    echo "it";
    }

    Das ist keine Funktion sondern eine ziemlich dämlich Prozedur, die zudem nur einen überflüssigen Wrapper darstellt.

    echo 'it';

    würde es hier auch tun.

    Allerdings diese Funktion nicht - irgendwie wird die Session per Funktion nicht übergeben, sonst klappt die Session aber (z.B. bei einer Abfrage ohne Funktion):

    function show_user()

    {

    if ($HTTP_SESSION_VARS["User"] == "Administrator")

    HTTP_SESSION_VARS and Siblings are deprecated. Du solltest also ein Upgrade Deiner Software vornehmen.

    if ($_SESSION['User'] == 'Administrator')
        {

    echo "Admin";
      }

    else
        {

    echo "kein Admin"
      }
    }

    -> im Laufe des Sktipts:
    show_user();

    Trotz Session als "Admin" wird dies nicht erkannt und "kein Admin" ausgegeben - obwohl man als Admin eingeloggt ist, ohne Funktion klappt es nämlich:

    Ja nee, si scho klar... *grins*

    Die alten sogenannten globalen Variablen waren nur "halbglobal". In der Funktion hättest Du sie mittels GLOBAL erst einmal bekannt machen müssen.
    Das kannst Du Dir mit den neuen "Superglobalen Arrays" http://de3.php.net/variables.predefined ersparen. Die sind bereits bekannt in Deiner Funktion

    alt:

    if ($HTTP_SESSION_VARS["User"] == "Administrator")

    {

    echo "Admin";
      }

    else
        {

    echo "kein Admin"
      }

    neu:

    if ($_SERVER['User'] == 'Administrator')

    {

    echo "Admin";
      }

    else
        {

    echo "kein Admin"
      }

    Das klappt dann auch innerhalb einer Funktion.

    Folgendes möchte ich vermeiden (Übergabe des Parameters), weil es sonst zuviel Schreibarbeit wird,

    Faules Schwein ;-))

    Harzliche Grüße vom Berg
    http://bergpost.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)