Logische Operatoren
Oft reicht es nicht aus in einer if-Anweisungen nur eine Bedingung zu überprüfen. Wenn man z.B. eine Passwortabfrage macht, möchte man wissen ob der Benutzername und das Passwort korrekt sind.
Für diesen Zweck gibt es die logischen Operatoren. Mittels lassen sich beliebig viele Bedingungen überprüfen. Um mehrere Bedingungen zu überprüfen existieren die folgenden Schlüsselwörter:
- Mittels AND oder der alternativen Schreibweise && müssen beide Bedingungen erfüllt sein.
- Mittels OR oder der alternativen Schreibweise || muss nur eine Bedingung erfüllt sein.
- Mittels dem Ausrufezeichen ! lassen sich Bedingungen negieren, d.h. damit diese erfüllt ist, darf die Bedingung nicht zutreffen.
- Mittels Klammern ( und ) lassen sich Bedingungen noch gruppieren.
Inhaltsverzeichnis
AND und OR-Operatoren
Werden zwei oder mehr Bedingungen durch AND verknüpft, so müssen alle Bedingungen erfüllt sein. Die alternative Schreibweise ist && . Welche man wählt, ist egal, und ist dem persönlichem Geschmack überlassen.
Bei OR ist es ausreichend, wenn bereits eine der Bedingungen erfüllt ist. Die alternative Schreibweise dazu ist ||. Nachfolgend ein Beispiel
<?php $username = "Nils"; $passwort = "php-einfach"; if($username == "Nils" AND $passwort == "php-einfach") { echo "Beide Bedingungen waren erfüllt - Zugriff erlaubt. <br />"; } if($username == "Nils" OR $passwort == "php-einfach") { echo "Eine oder beide Bedingungen waren erfüllt."; } ?>
Bei der ersten if-Anweisung werden $username und $passwort gemeinsam überprüft. Nur wenn beide Eingaben stimmen, wird der entsprechende Text ausgegeben. Bei der zweiten if-Anweisung ist es bereits ausreichend, wenn eine Bedingung erfüllt ist, also der $username oder das $passwort stimmen.
Durch AND und OR lassen sich auch mehr als nur zwei Bedingungen überprüfen:
<?php $gehalt = 25000; $vermoegen = 10000; $erbschaft = 0; if($gehalt > 10000 OR $vermoegen > 50000 OR $erbschaft > 1000000) { echo "Wow, du bist reich!"; } else if($gehalt < 1000 AND $vermoegen < 10000 AND $erbschaft == 0) { echo "Kleines Gehalt, wenig Vermögen, keine Erbschaft, schade!"; } else { echo "Keine der Bedingungen war erfüllt"; } ?>
Bedingungen Gruppieren mittels Klammern
Manchmal möchte man AND und OR-Operatoren miteinander kombinieren um gewisse Alternativen zu erlauben. Bei einer Passwort-Abfrage möchte man beispielsweise verschiedene Benutzer erlauben. Um die Zusammengehörigkeit der Operatoren klar zu machen, kann man diese mittels Klammern gruppieren.
<?php $username = "Nils"; $passwort = "php-einfach"; if( ($username == "Nils" AND $passwort == "php-einfach") OR ($username == "Paul" AND $passwort == "geheim") ) { echo "Benutzername und Passwort passten zusammen. <br />"; } if( $username == "Nils" AND ($passwort == "php-einfach" OR $passwort == "geheim") ) { echo "Der Benutzername war Nils, und das Passwort entweder php-einfach oder geheim."; }
Die erste if-Anweisung ist nur erfüllt, falls der Benutzer Nils mit dem Passwort php-einfach oder aber der Benutzer Paul und das Passwort geheim war.
Bei der zweiten if-Anweisungen muss der Username Nils sein und das Passwort darf entweder php-einfach oder geheim sein, damit die if-Anweisung ausgeführt wird.
Negation von Bedingungen
Mittels dem Ausrufezeichen ! lassen sich Bedingungen verneinen. Das erste Beispiel hatte ihr im Artikel zu if-Anweisungen gesehen. Ob eine Variable ungleich einer anderen Variable ist, lässt sich mittels $variable1 != $variable2 überprüfen. Wir können auch eine Bedingung bzw. auch mehrere Bedingungen verneinen, indem das Ausrufezeichen zu Beginn dieser geschrieben wird.
<?php $zahl = 25; if($zahl >= 10 AND $zahl <= 20) { echo "Die Zahl ist zwischen 10 und 20. <br />"; } if( !($zahl >= 10 AND $zahl <= 20) ) { echo "Die Zahl war NICHT zwischen 10 und 20 <br />"; } ?>
Bei der zweiten if-Anweisung wird die Bedingung verneint, das heißt, diese ist erfüllt, dass die Zahl nicht zwischen 10 und 20 liegt. In solch einem Fall war die Zahl entweder kleiner als 10 oder größer als 20.
Übungsaufgabe: Forme die zweite if-Anweisung so um, dass keine Negation mittels ! genutzt wird, sondern nur AND, OR und entsprechende Vergleichsoperationen wie <, <= etc.
Beispiel: Passwortabfrage
Für eine echte Passwortabfrage würde man die Variablen $username und $passwort per Formular eingeben.
Dazu benötigen wir zuerst wieder ein Formular mit zwei Input-Feldern.
1 2 3 4 5 6 7 |
<form action="seite2.php" method="post"> Username:<br> <input type="Text" name="username" /><br /> Passwort:<br /> <input type="Password" name="passwort" /><br /> <input type="Submit" value="Absenden" /><br /> </form> |
In diesem Formular gibt man dann den Username und das Passwort ein. Klickt man danach auf Absenden, wird seite2.php aufgerufen und an diese beide Eingaben übergeben.
seite2.php muss dann so aussehen:
<?php $username = $_POST["username"]; $passwort = $_POST["passwort"]; if($username=="Nils" AND $passwort=="php-einfach") { echo "Zugriff erlaubt"; } else { echo "Zugriff fehlgeschlagen"; } ?>
Als erstes wird im obigen Script die Daten des Formulars mittels $_POST abgefragt und in den entsprechenden Variablen gespeichert. Falls ihr unseren interaktiven Editor benutzt, drückt auf $ um die Werte der beiden POST-Variablen zu bearbeiten.
Mit einer if-Anweisung und dem logischen Operator AND wird danach überprüft, ob $username den Inhalt Nils und $passwort den Inhalt php-einfach hat. Nur wenn beide Eingaben richtig sind, wird die Nachricht Zugriff erlaubt dargestellt. Statt dieser simplen Nachricht könntet ihr dort auch eine geheime, interne Seite verstecken. Und schon hättet ihr einen entsprechenden Passwortschutz auf eurer Seite. Eine komplette Anleitung für eine Registrierung mit Login findet ihr in unserem Artikel Loginscript.
Autor: Nils Reimers