120 Stimmen

Was ist falsch an der Verwendung von $_REQUEST[]?

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?

7voto

Sampson Punkte 258265

Es ist vage. Sie wissen nicht wirklich wissen, wie die Daten zu Ihnen gelangt sind, da sie Post-, Get- und Cookie-Daten enthalten. Ich denke nicht unbedingt, dass das immer eine schlechte Sache ist, es sei denn, Sie brauchen die Art der Zustellung zu kennen oder einzuschränken.

4voto

Eric Petroelje Punkte 58501

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.

2voto

Jani Hartikainen Punkte 41573

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 ;)

2voto

Kyle Butt Punkte 9072

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.

0voto

Brian T Hannan Punkte 3785

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X