Ich habe hier eine Reihe von Beiträgen gesehen, in denen empfohlen wird, die $_REQUEST
variabel. Normalerweise tue ich das nicht, aber manchmal ist es praktisch. Was ist daran falsch?
Antworten
Zu viele Anzeigen?Ich benutze es eigentlich gerne. Es gibt Ihnen die Flexibilität, GET oder POST zu verwenden, was für Dinge wie Suchformulare nützlich sein kann, bei denen die meiste Zeit Daten per POST gesendet werden, aber manchmal werden Sie sagen wollen, dass Sie einen Link zu einer bestimmten Suche haben, also können Sie stattdessen GET-Parameter verwenden.
Außerdem wird in vielen anderen Sprachen (z. B. ASP.NET) überhaupt nicht zwischen GET- und POST-Variablen unterschieden.
ETA :
Ich habe REQUEST noch nie verwendet, um COOKIE-Werte zu erhalten, aber ich denke, Kyle Butt hat in den Kommentaren zu diesem Beitrag ein gutes Argument dafür. Es ist KEINE gute Idee, REQUEST zum Abrufen von COOKIE-Werten zu verwenden. Ich glaube, er hat Recht, dass es ein echtes Potenzial für Cross-Site Request Forgery gibt, wenn man das tut.
Außerdem wird die Reihenfolge, in der die Daten in REQUEST geladen werden, durch Konfigurationsparameter in php.ini (variables_order und request_order) gesteuert. Wenn also dieselbe Variable sowohl per POST als auch per GET übergeben wird, hängt es von diesen ini-Einstellungen ab, welche Variable tatsächlich in REQUEST geladen wird. Dies könnte die Übertragbarkeit beeinträchtigen, wenn Sie auf eine bestimmte Reihenfolge angewiesen sind und diese Einstellungen anders konfiguriert sind als Sie es erwarten.
Das einzige Mal, dass die $_REQUEST
ist keine schlechte Idee mit GET.
- Wenn Sie es zum Laden von POST-Werten verwenden, riskieren Sie seitenübergreifende Anforderungsfälschungen
- Wenn Sie es zum Laden von Cookie-Werten verwenden, riskieren Sie wiederum Cross-Site-Request-Forgeries
Und sogar mit GET, $_GET
ist kürzer zu tippen als $_REQUEST
;)
Es ist wichtig zu wissen, wann POST, wann GET und wann ein Cookie verwendet werden sollte. Bei $_REQUEST könnte der Wert, den Sie betrachten, von jedem dieser Werte stammen. Wenn Sie erwarten, den Wert von einem POST oder GET oder einem COOKIE zu erhalten, ist es für jemanden, der Ihren Code liest, informativer, die spezifische Variable anstelle von $_REQUEST zu verwenden.
Jemand anderes wies auch darauf hin, dass nicht alle POSTs oder Cookies durch GETs überschrieben werden sollten, da es für alle unterschiedliche Cross-Site-Regeln gibt, z. B. wenn Sie Ajax-Daten zurückgeben, während Sie $_REQUEST verwenden, sind Sie anfällig für einen Cross-Site-Script-Angriff.
I könnte nur verwendet werden, wenn Sie die aktuelle URL oder den Hostnamen abrufen wollen, aber für das eigentliche Parsen von Daten aus dieser URL, wie z. B. Parameter, die das Symbol & verwenden, ist es wahrscheinlich keine gute Idee. Im Allgemeinen sollten Sie keine vage Beschreibung dessen verwenden, was Sie zu tun versuchen. Wenn Sie spezifisch sein müssen, ist $_REQUEST schlecht, wenn Sie nicht spezifisch sein müssen, können Sie es ruhig verwenden. Ich würde denken.