Thomas: if problem

ich möchte gerne folgendes abfragen:

if($_SESSION['user']==0)

doch wenn überhaupt nichts in der Variable steht, bekomme ich folgenden Meldung

Notice: Undefined index: user

wie kann ich diese den verhindern?

Thomas

  1. Unschöne Lösung wäre die Errors einfach abschalten.
    Schöne Lösung wäre ein if(isset($_SESSION['user']) && $_SESSION['user'] == 0) zu prüfen ob der Index überhaupt existiert.

    Das würde auch bei normalen variablen funktionieren.

    Gruß
    isset(T-Rex)

    1. Moin,

      Unschöne Lösung wäre die Errors einfach abschalten.

      Das ist keine Lösung, sondern Ignorieren des Fehlers ;)

      Grüße Marco

    2. Unschöne Lösung wäre die Errors einfach abschalten.
      Schöne Lösung wäre ein if(isset($_SESSION['user']) && $_SESSION['user'] == 0) zu prüfen ob der Index überhaupt existiert.

      auf == 0 zu prüfen kann aber schlecht sein. Wenn tatsächlich auf die User-ID 0 (oder was auch immer das jetzt ist) geprüft werden soll, ist dringend ein === 0 anzuraten.

      Ansonsten könnte auch bei "ist gesetzt aber leer" das == 0 auf true evaluieren.

      1. Da hast du natürlich recht. Ich habe die Frage jedoch lediglich so verstand, dass ihn der Fehler stört. Alle anderen Sachen obligen seinem Logischem Verständnis. Vielleicht ist eine Abfrage mit == ja erwünscht...

        Gruß
        störender?
        T-Rex

  2. Hi!

    ich möchte gerne folgendes abfragen:
    if($_SESSION['user']==0)

    Wofür steht die 0? Ist das ein Wert, der vorkommen kann und genauso wie beispielsweise 1, 23 oder 42 einen User repräsentieren kann? Oder willst du wissen, ob es kein User ist, weil nur positive Zahlen ungleich 0 Usern zugeordnet sein können? Wenn die letzte Vermutung zutrifft, dann frag mit empty().

    doch wenn überhaupt nichts in der Variable steht, bekomme ich folgenden Meldung
    Notice: Undefined index: user
    wie kann ich diese den verhindern?

    empty() und isset() sind die beiden einzigen Funktionen[*], die keine Notice-Meldungen werfen, wenn sie nicht vorhandene Variablen oder wie in deinem Fall Array-Felder übergeben bekommen. Damit eigenen sie sich für diese Art Tests.

    [*] Genaugenommen sind es keine Funktionen sondern Sprachkonstrukte. Deswegen kann PHP anders als bei den anderen Funktionen mit den ihnen übergebenen Parametern umgehen.

    Lo!

  3. ich möchte gerne folgendes abfragen:

    if($_SESSION['user']==0)

    doch wenn überhaupt nichts in der Variable steht, bekomme ich folgenden Meldung

    Notice: Undefined index: user

    wie kann ich diese den verhindern?

    Thomas

    am besten vorher mit isset() auf Existenz prüfen.

    gruß zum selber bauen