Es gibt ein wenig Verwirrung um welchen Wert getestet werden sollte. Möchten Sie den Parameter konami
als true
im Sinne von boolesch testen, d. H. Sie möchten konami
als truthy testen, oder möchten Sie testen, ob der Zeichenfolgenwert gleich "true"
ist?Oder wollen Sie konami
Parameter für beliebige Wert im Allgemeinen testen?
Ich denke, was hier gesucht wird, ist konami
für einen gegebenen String-Wert, "true"
in diesem Fall zu testen, und zur gleichen Zeit gesetzt werden. In diesem Fall ist dies perfekt genug:
ini_set('error_reporting', E_ALL & ~E_NOTICE);
...
if ($_GET['konami'] == "true")
...
Dies ist genug, denn wenn die $_GET['konami']
ungesetzt ist, es nicht auf einen String-Wert mit Ausnahme ""
gleich sein kann. Die Verwendung von ===
ist nicht erforderlich, da Sie wissen, dass $_GET['konami']
eine Zeichenfolge ist.
Beachten Sie, dass ich die E_NOTICE
ausschalten, die jemand nicht mag - aber diese Art von "Hinweise" sind normalerweise gut in vielen Programmiersprachen und Sie werden nichts verpassen, wenn Sie sie deaktivieren. Wenn Sie dies nicht tun, müssen Sie Ihren Code unecessarily komplex wie diese machen:
if (isset($_GET['konami']) && $_GET['konami'] == "true")
Sie wirklich mit diesem Sie Ihren Code wollen erschweren, oder besser gesagt es einfach zu machen und die Hinweise wie Undefinex index
ignorieren? Es liegt an dir.
Probleme mit anderen Antworten, wie Sie erwähnt:
- @Jan Hancic Antwort: Es testet für
true
, nicht "true"
.
- @Cameron Antwort: könnte vereinfacht werden und er erwähnte nicht die Notwendigkeit der Deaktivierung
E_NOTICE
.
- @Frits van Campen Antwort: zu komplex, um meinen Geschmack unnötig Test für
=== true
Nein, es funktioniert nicht am besten :) Wenn Sie den '? konami' Parameter in Ihrer URL nicht übergeben, dann existiert er nicht und Sie erhalten einen 'Undefined index' beim Zuweisen es zu "$ konami". Setzen Sie das PHP-Debugging/Fehlerreporting auf on und Sie werden sehen. –