• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[GELÖST] if-Abfrage mit vielen &&-Operatoren verkürzen

J

j-l-n

Guest
Es handelt sich um ein Registrierungs-Skript. In diesem wird, wenn z.B. ein Textfeld korrekt ausgefüllt ist, die Variable $textfeld auf "true" gesetzt.
Die Daten werden aus Sicherheitsgründen nicht einfach nur in die DB geschrieben, wenn keine Fehler auftreten, sondern NUR DANN, wenn alle spezifierten Variablen true sind, also
PHP:
if($checkbox_checked === true && $ip_not_bad === true && $message_not_empty === true && $textfeld === true; //usw...)

Da noch ein paar Variablen mehr oben stehen, kommt eine ziemlich lange if-Zeile dabei raus.
Nun meine Frage:
Ist es möglich, obiges Beispiel zu verkürzen, und dennoch das Gleiche damit zu bewirken?

Also irgendwie in dieser Art (das ist jetzt kein korrektes Skript, sondern nur eine Überlegung von mir):
PHP:
if(($checkbox_checked && $ip_not_bad && $message_not_empty && $textfeld) === true){
 
Zuletzt bearbeitet von einem Moderator:
Doch, das ist ein korrektes Script und funktioniert genau so.
Allerdings vergleicht das nicht alle einzelne Variablen streng mit true (===true), sondern evaluiert die einzelnen Variablen zu true/false (nicht so streng wie ===true) und schaut ob das Ergebnis am Ende true ist.
Genauere Infos was zu true evaluiert findest du hier:
PHP: Booleans - Manual
 
Danke, skooli :)
Was der Unterschied zwischen == und === ist, weiß ich - danke dennoch für die Info. Gibt es auch eine Möglichkeit, dass dennoch auf genau den Boolean-Wert "true" verglichen wird?
 
So wie ich das sehe, hast du doch die Kontrolle über die Variablen, die du da überprüfst. D.h. du weiß, dass da nur true oder false drin stehen kann.

Deswegen ist doch
Code:
if ($checkbox_checked && $ip_not_bad && $message_not_empty && $textfeld){
komplett ausreichend...
 
Wenn dann noch einige Variablen zukommen bietet sich u.U. an, gleich mit einem Array zu arbeiten oder die Variablen in ein Array zu packen.
Für die Abfrage selbst stehen diverse Array-Funktionen bereit. Beispiel, welches array_filter benutzt und auf identisch true prüft::

PHP:
$check['checkbox_checked'] = true;  
$check['message_not_empty'] = true;

if( $check === array_filter($check, function($value){return $value === true;})) {
    echo "alle Werte === true";
}
else {
    echo "ein/mehrere Werte nicht true";
}

LG jspit
 
So wie ich das sehe, hast du doch die Kontrolle über die Variablen, die du da überprüfst. D.h. du weiß, dass da nur true oder false drin stehen kann.

Stimmt, von daher genügt tatsächlich die Lösung - danke für den Hinweis!

@jspit: ebenfalls danke, das mit dem Array wäre auch eine Option.

Thema gelöst! (schon erledigt - du bist ja schneller als ich einen anderen Beitrag aufrufe, mikdoe :D)
 
Zuletzt bearbeitet:
ich persönlich würde vorschlagen, du nutzt gleichzeitig html5. da kannst du vorab jedes feld, welches ein pflichtfeld ist als notwendig markieren.

bspw:

HTML:
<input type="text" name="username" maxlength="25" value="" placeholder="User123" required="required">

in diesem fall (so nutze ich es, habe aber noch ein paar sachen rausgenommen) steht "required="required"" dafür, dass das feld ausgefühllt sein MUSS. versucht jemand das formular abzusenden wenn ein solches feld leer ist erscheint automatisch eine info....

das schützt natürlich nicht davor serverseitig zu überprüfen, gibt ja auch böse leute ^^
 
Zurück
Oben