Logische Operatoren
Oft reicht es nicht aus, nur eine Bedingung zu überprüfen. Wenn man z.B. eine Passwortabfrage macht, möchte man wissen ob der Benutzername und das Passwort richtig sind.
Deshalb kann man in PHP mehrere Bedingungen miteinander verknüpfen. Natürlich kann man mehrere if-Anweisungen benutzen, aber wenn man z.B. 5 Bedingungen überprüfen möchte, wäre dies doch sehr unübersichtlich.
Für diesen Zweck gibt es die logischen Operatoren.
Hiermit können wir beliebig viele Bedingungen verschiedenst miteinander Verknüpfen.
Eine Passwortabfrage zum Beispiel würde dann so aussehen:
<?php $username ="Nils"; $passwort ="php-einfach";if($username=="Nils"[b]AND[/b] $passwort=="php-einfach") { echo "Zugriff erlaubt"; }?>
Hier werden $username und $passwort gemeinsam überprüft. Nur wenn beide Eingaben stimmen, wird der Zugriff erlaubt.
Die Verbindung der beiden Bedingungen erfolgt über den Operator AND (und). Das selbe Ergebnis erzielt man mit &&. Welche Schreibweise man letztendlich verwendet ist egal. Ich bevorzuge AND, da es intuitiver aussieht.
Es gibt immer wieder Fälle, wo es reicht, dass nur eine Bedingung erfüllt ist.
Dafür gibt es den Operator OR (oder), manchmal wird er auch als || geschrieben:
<?php $username ="Nils"; $passwort ="php-einfach";if($username=="Nils"[b]OR[/b] $passwort=="php-einfach") { echo "Zugriff erlaubt"; }?>
Diese IF-Anweisung ist auch dann erfüllt, wenn nur eine der beiden Bedingungen erfüllt ist. Zugegeben für eine Passwortabfrage macht das eher weniger Sinn, aber dazu später mehr.
Auch wenn bei OR beide Bedingungen erfüllt sind, erhalten wir als Ausgabe Zugriff erlaubt.
Man könnte eine Passwortabfrage auch für mehrere Personen erstellen, dazu verknüpfen wir die verschiedenen Operatoren einfach:
<?php $username ="Nils"; $passwort ="php-einfach";if(($username=="Nils" AND $passwort=="php-einfach") OR ($username=="Paul" AND $passwort=="geheim")) { echo "Zugriff erlaubt"; }?>
Hier hätten nur Nils mit dem Passwort php-einfach oder Paulmit dem Passwort geheim zugriff. Ein Nils der als Passwort z.B. geheim eingibt, hätte keinen Zutritt.
Es gibt jedoch noch die dritte Variante des logischen Operators, dabei darf nur eine Bedingung wahr sein.
Diese Variante nennt sich exklusives oder und wird wie folgt geschrieben:
<?php $username ="Nils"; $passwort ="php-einfach";if($username=="Reimers"[b]XOR[/b] $passwort=="php-einfach") { echo "Zugriff erlaubt"; }?>
Jetzt wird nur dann die Anweisung ausgeführt, wenn die Variable $username den Inhalt Reimers hat, oder die Variable $passwort den Inhalt php-einfach hat. Sind beide Inhalte richtig angeben, erfolgt kein Zugriff.
Dieses „entweder oder“ wird XOR geschrieben.
Noch mal:
Bei AND müssen beide Bedingungen erfüllt sein
Bei OR muss mindestens eine Bedingung erfüllt sein
Bei XOR darf nur eine Bedingungen erfüllt sein
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 zweiInput-Feldern.
<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 dasPasswort ein. Klickt man danach auf Absenden, wirdseite2.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 Fragen wir die eingegebenen Daten ab.
Diese Eingaben werden in den Variablen $username und$passwort gespeichert.
Mit einer if-Anweisung und dem logischen Operator AND wird abgefragt, ob $username den Inhalt Nils und $passwort den Inhalt php-einfach hat.
Nur wenn beide Eingaben richtig sind, kommen wir in den internen Bereich.