Warum würden Sie $ _GET und $ _POST in PHP zusammenführen?

8

Ich habe gerade diesen Code gesehen, während ich den Quelltext von Wordpress (PHP) studiert habe. Sie können sehen, dass sie alle get- und post-Werte in ein Anforderungs-Array umwandeln.

Nun, wie ich es weiß, $ _GET und $ _POST sind bereits verfügbar, indem Sie $ _REQUEST WITHOUT mit der Funktion array_merge () aufrufen, also irgendwelche Ideen, warum sie das tun würden?

%Vor%     
JasonDavis 14.09.2009, 00:08
quelle

4 Antworten

17

Das liegt daran, dass der Standardwert $_REQUEST eine Zusammenführung von $_GET , $_POST UND $_COOKIE ist. Auch die Reihenfolge, in der die Variablen dieser Superglobals in $_REQUEST zusammengeführt werden, ist abhängig von der Ini-Einstellung variables_order und kann ab PHP 5.3.0 auch durch request_order beeinflusst werden. Meine Vermutung ist also, dass der Entwickler sicherstellen wollte, dass $_REQUEST nur aus $_GET und $_POST besteht, die in dieser Reihenfolge zusammengeführt wurden, wenn er keinen Zugriff auf ini-Einstellungen hatte (zB auf einem Shared Host) . Sie sehen, variables_order und request_order sind nicht pro Skript konfigurierbar.

HTH

    
Decent Dabbler 14.09.2009, 00:19
quelle
6

$_REQUEST enthält standardmäßig die Inhalte von $_GET , $_POST und $_COOKIE . Vielleicht wollen sie COOKIE-Variablen ausschließen, da sie in der Regel nicht für diesen Zweck verwendet werden.

    
Fragsworth 14.09.2009 00:13
quelle
3

Dies ist der Fall, wenn Sie eine GET-Variable und eine POST-Variable mit demselben Namen haben, wählt sie die POST-Variable über die GET-Variable.

Sie möchten die Cookies auch nicht in der Variablen $ _REQUEST.

    
Harley Watson 14.09.2009 00:12
quelle
1

Ich weiß nicht genau, warum es dort gemacht wurde, wo Sie es gesehen haben, aber ich habe es schon einmal gesehen, als die Werte in dem einen oder anderen Array bearbeitet wurden und Sie diese Änderungen wieder in $ _REQUEST zusammenführen wollen damit jeder, der $ _REQUEST benutzt, die Änderungen erhält, obwohl sie an den $ _POST oder $ _GET Variablen vorgenommen wurden.

Dies kommt in Situationen wie Wordpress auf, weil Plugin-Entwickler jede dieser Variablen verwenden können, um auf Daten zuzugreifen, und der Wordpress-Core müsste sicherstellen, dass alle dieselben Daten erhalten.

Warum möchtest du es nicht direkt zu $ ​​_REQUEST machen? Weil $ _REQUEST eine Tonne zusätzlicher Informationen enthält, die $ _POST und $ _GET nicht haben. Möglicherweise möchten Sie Ihre Verarbeitung nicht auf all diese zusätzlichen Bits anwenden.

    
Gabriel Hurley 14.09.2009 00:12
quelle

Tags und Links