paco: Benutzerverwaltung und PHP-Funktions-Anfängerfrage

Hallo allerseits!
Ich bastele gerade an einem einfachen sessionbasierten Projektverwaltungstool. Ich wollte bei den jeweiligen Nutzern -je nach Status- Menüpunkte ausblenden und so bestimmte Funktionen deaktivieren. Leider sind meine PHP-Kenntnisse noch recht rudimentär, deshalb hier schon mal eine erste vielleicht etwas blöde frage:

Ich habe folgende Funktion gebastelt, um den Status des angemeldeten Users abzufragen und einzublenden:

/** ermittelt den Status des gerade angemeldeten Users */
function get_current_UserStatus()
{
    $sql="SELECT UserStatus FROM users WHERE UserSession='".session_id()."' ";
    $result = mysql_query($sql) or die(mysql_error());
    while ($link = mysql_fetch_object($result)) {
    $UserStatus = ($link->UserStatus);
    }
    echo $UserStatus;
}

Soweit so gut, aber so kann ich den Status ja nur ausgeben und nicht damit weiterarbeiten, a la if(UserStatus == "admin") echo 'menuepunktX' o.ä.
weil $UserStatus ja nur innerhalb der Funktion einen Wert hat.

Wie muß ich denn die Funktion aufrufen um den Wert übergeben zu bekommen bzw haltet ihr diese Methode überhaupt für sinnvoll oder ist es  besser alles per include einzubinden?

Vielen Dank schonmal

Paco

  1. Hallo Paco,
    du kannst mit globalen Variablen arbeiten, den Wert in der Session speichern oder mit Klassen programmieren.

    Speichere am besten der Wert aus der Funktion in der Session mit $_SESSION['status'] = $link->UserStatus;

    Grüße
    Tom123

    1. Hey Tom! Sehr cool! Vielen Dank für die schnelle Antwort, funktioniert hervorragend! Ein globales assoziatives session-Array, wie abgefahren ist das denn?
      Aber mal so interessehalber, kann die Funktion nicht $UserStatus irgendwie mittels return zurückgeben? Das Ist doch nicht so viel verlangt von so ner Funktion, oder? ;-)
      Ich dachte an

      function get_current_UserStatus(status)
      {
          $sql="SELECT UserStatus FROM users WHERE UserSession='".session_id()."' ";
          $result = mysql_query($sql) or die(mysql_error());
          while ($link = mysql_fetch_object($result)) {
          $UserStatus = ($link->UserStatus);
          }
          $status = $UserStatus;
          return $status;
      }
       oder so...

      Speichere am besten der Wert aus der Funktion in der Session mit $_SESSION['status'] = $link->UserStatus;

      Grüße
      Tom123

      1. Hallöchen,

        Aber mal so interessehalber, kann die Funktion nicht $UserStatus irgendwie mittels return zurückgeben? Das Ist doch nicht so viel verlangt von so ner Funktion, oder? ;-)
        Ich dachte an

        function get_current_UserStatus(status)
        {
            $sql="SELECT UserStatus FROM users WHERE UserSession='".session_id()."' ";
            $result = mysql_query($sql) or die(mysql_error());
            while ($link = mysql_fetch_object($result)) {
            $UserStatus = ($link->UserStatus);
            }
            $status = $UserStatus;
            return $status;
        }
        oder so...

        Fast getroffen:
        return($UserStatus);

        Wozu du der Funktion einen Parameter übergibst, weis ich nicht:

        a) get_current_UserStatus(status) übergibt keine gültige Variable ($-Zeichen fehlt)

        b) du wertest den Parameter nicht aus - also brauchst du ihn nicht zu übergeben...

        MfG
        vaudi