dedlfix: Erneute Formular-Bestätigung verhindern

Beitrag lesen

Tach!

Jeder von uns hat so seine Reflexe. Gunnar bei A11Y-Issues, und Du, wenn Inhalte von Superglobals in lokale Variablen kopiert werden. Aber diesmal hast Du zu schnell geschossen; ich meinte tatsächlich auslesen, nicht kopieren, und eine Variable, die ich nicht auslese, ist sinnlos.

Lesen/Lesezugriff wäre das bessere Wort. Auslesen ist eher von der Bedeutung herausholen, erstmal auspacken vor dem Verwenden.

Übrigens: die PHP Doku sagt auf der Seite von $_REQUEST:

The presence and order of variables listed in this array is defined according to the PHP variables_order configuration directive.

WTF? Das wurde die Doku nach 5.3 nicht aktualisiert; seit dem ist zunächst mal request_order, und nur wenn der Wert leer ist, zieht die variables_order. Der Default für request_order ist zwar leer, um Rückwärtskompatibel zu sein, aber die mitgelieferten Muster-INIs von PHP setzen "GP" ein. Auch das ist etwas, das nicht auf der Dokuseite steht. Grmbl...

Zumindest steht es bei der Description of core php.ini directives.

Den Satz "If this directive is not set, variables_order is used for $_REQUEST contents" hatte ich überlesen. Da kann also auch noch mehr Varianten haben, die je nach Konfiguration anders sind.

Du sagst also, es ist ungünstig, $_REQUEST zu verwenden. Eigentlich finde ich es ganz praktisch, seine Seiten Requesttype-agnostisch zu bauen. Wie meine php.ini aussieht, weiß ich ja normalerweise.

Ja, du vielleicht. Ich weiß aber auch nicht alle Einstellungen aus dem Kopf und weniger affine Personen wissen das gleich gar nicht. Besonders hat man oftmals kaum Einfluss, wenn man Software für Dritte schreibt, deren Umgebung man nicht kennt und/oder beinflussen kann.

Requesttype-agnostisch kann auch Nachteile haben. Beispielsweise wäre eine Konfiguration CGP oder CPG eine nicht ungefährliche Sache, weil dabei Cookie-Werte durch GET- und POST-Werte überschrieben werden können, und man so Links erstellen kann, die Cookies überschreiben, auf die man sonst als Außenstehender keinen Einfluss hätte.

Ich habe den Hinweis jetzt nur für $GLOBALS gefunden: Wird $_REQUEST ebenfalls lazy initialisiert, so dass ich durch den Nichtzugriff darauf Zeit sparen kann?

auto_globals_jit gilt für "SERVER, REQUEST, and ENV". Wird $GLOBALS überhaupt initialisiert? Ist das nicht nur eine Sicht auf den Variablenspeicher?

dedlfix.