Aloha ;)
Hab es jetzt mal so gemacht, scheint zu gehen:
if(isUserLoggedIn($mysqli) === FALSE) { header('Location: login'); } if ($user_type == 'administrator') { header('Location: index'); }
Ja, geht auch. Weil es logisch korrekt und so ist, dass wenn alles richtig läuft nie die zweite Bedingung erfüllt ist, wenn die erste Bedingung erfüllt war.
Es gibt aber einen Grund, warum dir hier alle zu else-if raten.
A: Performancegründe. Bei deiner Variante werden immer zwei Bedingungen geprüft. Mag unbedeutend erscheinen, aber wenn du deine If-Abfragen jedes mal so unperformant gestaltest und dein System eine entsprechende Größe erreicht, wirst dus merken.
B: Guter Stil und vorausschauendes Programmieren. In diesem Fall ist die Logik noch klar, so dass das Ergebnis logisch einfach abschätzbar ist. Aber lass Zeit ins Land gehen und du änderst u.U. die Bedingungen, bzw. die Aktionen, die im Fall des Eintretens einer der Bedingungen geschehen. Dann kommts zu Fehlern, wenn du vorher nicht bedacht hast, dass das Verhalten der ersten Abfrage durchaus mit der zweiten zusammenfällt.
Also entweder solltest du, wie angeraten, else-if benutzen, oder, damit wenigstens (auch später noch) jederzeit klar ist, dass das zusammengehört und voneinander abhängt, gleich alles in ein if packen. Soll heißen entweder:
if(isUserLoggedIn($mysqli) === FALSE) {
header('Location: login');
} elseif ($user_type == 'administrator') {
header('Location: index');
}
(Ich habe hier aus Gründen der Lesbarkeit die Kurzschreibweise elseif benutzt, die in PHP möglich, in anderen Sprachen aber nicht immer möglich ist)
oder:
if(isUserLoggedIn($mysqli) === FALSE OR $user_type == 'administrator') {
header('Location: login');
}
Performancetechnisch ist - auch wenn man das nicht gleich sieht - beides besser als deine Variante, da auch im zweiten Fall PHP (imho) bei OR die Prüfung schon beendet, wenn die erste Bedingung true ergibt, nicht aber wenn die beiden if vollkommen unabhängig voneinander sind...
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:[