Camping_RIDER: Frage zu IF / ELSEIF

Beitrag lesen

Aloha ;)

wollte dieses nun bei mir einbauen, hab es so gemacht:

if(isUserLoggedIn($mysqli) === FALSE) {
        header('Location: login');
}
 $object = userDaten($mysqli, session_id());
 elseif (
		$object->user_type == 'administrator') {
         header('Location: index');
}

Da sind auf jeden Fall Syntaxfehler drin. Deine Definition von $object steht außerhalb des if-Anweisungsblocks, obwohl nachher ja noch ein else (hier elseif) folgen soll. Wenn du ein if und ein else kombinieren willst, müssen diese natürlich zusammenstehen.

Welche Bedeutung sollte der folgende Anweisungsblock losgelöst auch haben?

 elseif (
		$object->user_type == 'administrator') {
         header('Location: index');
}

Ein "ansonsten" ohne "wenn" ist schlicht und ergreifend bedeutungslos. Deshalb darf zwischen if-Block und else-Block auch nichts anderes stehen.

Aber auch logisch musst du grundsätzlich überlegen, was du erreichen willst. Ich schätze, $object soll gefüllt werden, sofern der User eingeloggt ist, unabhängig davon ob man administrator ist oder nicht.

In den if-Abfragen bisher gibt es aber noch gar keinen Strang, der diese Bedingung erfüllt (denn bisher waren die beiden einzigen abgefragten/abgefangenen Fälle die Fälle "User ist nicht eingeloggt" und "User eingeloggt und Administrator". Du brauchst aber "User ist Administrator".

In dem Fall ist die elseif-Kurzschreibweise eher ungeeignet, es ginge aber auch:

if(isUserLoggedIn($mysqli) === FALSE) {
//Fall: nicht eingeloggt
        header('Location: login');
} elseif ($object->user_type == 'administrator') {
//Fall: eingeloggt als Administrator
         header('Location: index');
         $object = userDaten($mysqli, session_id());
} else {
//Fall: eingeloggt, nicht als Administrator
         $object = userDaten($mysqli, session_id());
}

Siehst du, warum das ungünstig ist? Hier wird eine Aktion an zwei Stellen ausgeführt, das ist besonders wartungstechnisch unsinnvoll. Besser ist hier, elseif nicht in Kurzschreibweise, sondern ausgeschrieben zu verwenden:

if(isUserLoggedIn($mysqli) === FALSE) {
//Fall: nicht eingeloggt
        header('Location: login');
} else {
        //Fall: eingeloggt
        if ($object->user_type == 'administrator') {
                 //Fall: ...als Administrator
                 header('Location: index');
                 $object = userDaten($mysqli, session_id());
         } 

         $object = userDaten($mysqli, session_id());
}

Mit dieser Version hast du weiterhin alle Vorteile.

Anmerkung: Ich bin mir nicht ganz sicher, ob du das wolltest wie oben... Oben habe ich angenommen, dass im Fall "eingeloggt als Administrator" das $object auch definiert werden soll. Falls nicht, ist es natürlich unproblematisch, die erste Variante zu benutzen, z.B. so:

if(isUserLoggedIn($mysqli) === FALSE) {
//Fall: nicht eingeloggt
        header('Location: login');
} elseif ($object->user_type == 'administrator') {
//Fall: eingeloggt als Administrator
         header('Location: index');
} else {
//Fall: eingeloggt, nicht als Administrator
         $object = userDaten($mysqli, session_id());
}

Grüße,

RIDER

--
Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller Erreichbar meist Mittwochs ab 21 Uhr im Self-TS (ts.selfhtml.org) oder sonst - wenn online - auf dem eigenen TeamSpeak-Server (fritz.campingrider.de). # Facebook # Twitter # Steam # YouTube # Self-Wiki # ch:? rl:| br:> n4:? ie:% mo:| va:) js:) de:> zu:) fl:( ss:| ls:[
0 111

Userberechtigung

Jnnbo
  • php
  1. 0
    Matthias Apsel
  2. 0
    Sven Rautenberg
    1. 0
      Jnnbo
      1. 1
        Sven Rautenberg
        1. 0
          Jnnbo
          1. 0
            Sven Rautenberg
      2. 0
        Jörg Reinholz
        1. 0
          Jnnbo
          1. 3
            Jörg Reinholz
            1. 0

              THX aber ...

              Jörg Reinholz
  3. 0
    Jörg Reinholz
    1. 0
      Jnnbo
      1. 1
        Camping_RIDER
        1. 0
          Jnnbo
          1. 0
            robertroth
            1. 0
              Jnnbo
              1. 0
                robertroth
            2. 0
              Camping_RIDER
          2. 0
            Camping_RIDER
        2. 0
          Sven Rautenberg
          1. 0
            Camping_RIDER
            1. 0
              Sven Rautenberg
              1. 0
                Camping_RIDER
        3. 0

          Frage zu IF / ELSEIF

          Jnnbo
          1. 1
            dedlfix
            1. 0
              Tabellenkalk
              1. 0
                dedlfix
          2. 0
            Camping_RIDER
            1. 0
              Jnnbo
              1. 1
                Camping_RIDER
                1. 0
                  Jnnbo
              2. 0
                MudGuard
                1. 0

                  Ich mach das nicht beruflich!

                  Jnnbo
                  1. 0
                    Jörg Reinholz
              3. 0
                Jörg Reinholz
            2. 0

              Anmerkung / Fehler

              Camping_RIDER
              • php
              • zur info
              1. 0
                Jnnbo
                1. 0
                  Camping_RIDER
                  • menschelei
                  • php
                  • zur info
  4. 0
    robertroth
    1. 0
      Jnnbo
      1. 1
        robertroth
        1. 0
          Jnnbo
          1. 3
            Sven Rautenberg
        2. 0
          Camping_RIDER
          1. 0
            Jnnbo
            1. 0
              Camping_RIDER
            2. 0
              Auge
              • https
              1. -1
                Jnnbo
                1. 1
                  Auge
                  • https
                  • meinung
                  1. 0
                    Jnnbo
                    1. 1
                      Der Martin
                      1. 0
                        Tabellenkalk
                        • meinung
                      2. 1
                        robertroth
                        1. 1
                          Der Martin
              2. 0
                Camping_RIDER
                1. 0
                  Auge
                  1. 0
                    Camping_RIDER
      2. 1
        Der Martin
        • https
        • php
        1. 0
          Sven Rautenberg
          1. 1
            Der Martin
        2. 1
          robertroth
          1. 0
            Camping_RIDER
          2. 1
            Der Martin
            1. 0
              robertroth
    2. 0
      Camping_RIDER
      1. -1
        robertroth
        1. 0
          Jnnbo
          1. 1
            robertroth
        2. 0
          Sven Rautenberg
          1. 0
            robertroth
          2. 0
            robertroth
            1. 0
              Sven Rautenberg
              1. 0
                Sven Rautenberg
                1. 0
                  robertroth
                  • https
                  1. 0
                    Sven Rautenberg
          3. 0
            MudGuard
        3. 0
          Camping_RIDER
        4. 0

          Bewertung

          robertroth
          • menschelei
          • zu diesem forum
      2. 0
        Jörg Reinholz
        1. 0
          Sven Rautenberg
          1. 0
            Jörg Reinholz
        2. 0
          Camping_RIDER
  5. 1

    Meine Meinung zu dieser Diskussion

    Jnnbo
    • zu diesem forum
    1. 0

      Meine Meinung zu der Diskussion

      robertroth
      1. 0
        Jnnbo
        1. 1
          Tabellenkalk
          1. -1
            Jnnbo
            1. 1

              Professionelles Arbeiten

              Camping_RIDER
            2. 1
              Jörg Reinholz
              1. 0
                Jnnbo
                1. 1
                  Jörg Reinholz
    2. 4

      Meine Meinung zu der Diskussion

      Camping_RIDER
      • meinung
      • zu diesem forum
  6. -1
    Jörg Reinholz
    1. 0
      Camping_RIDER
      1. 0
        Jörg Reinholz
        1. 0
          Camping_RIDER
          • meinung
          • zu diesem forum
          1. 1
            Jörg Reinholz
            1. 0
              Camping_RIDER
  7. 0

    So, seid ihr damit nun zufrieden?

    Jnnbo
    1. 0
      Jörg Reinholz
      1. 0
        Jnnbo
        1. 0
          Jörg Reinholz
          1. 0

            Links

            Camping_RIDER
            • meinung
            • menschelei
    2. 3
      dedlfix
      1. 0
        Jnnbo
        1. 2
          Jörg Reinholz
          1. 0
            Jnnbo
            1. 0
              Jörg Reinholz
              1. 0
                Tabellenkalk
        2. 0
          dedlfix