Problem beim Extrahieren von Superglobalen

Gesperrt
xmurrix
Beiträge: 3217
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 18 Mal
Kontaktdaten:

Problem beim Extrahieren von Superglobalen

Beitrag von xmurrix »

Hallo zusammen,

mir ist soeben aufgefallen, dass nicht alle Superglobale in der globals_off.inc.php in den globalen Namensraum extahiert werden.

Sehr wahrschenlich ist das auch der Grund bei manchen Usern, die beim Aufruf des Installers des AMR-Plugins und nach Anmeldung nicht beim Installer landen, sondern im Contenido-Backend.

Folgender Codeblock ist dafür gedacht, um die Superglobalen zu estrahieren:

Code: Alles auswählen

$types_to_register = array ('GET', 'POST', 'COOKIE', 'SESSION', 'SERVER');
foreach ($types_to_register as $global_type)
{
	$arr = @ ${'_'.$global_type};
	if (@ count($arr) > 0)
	{
		// echo "<pre>\$_$global_type:"; print_r ($arr); echo "</pre>";
		extract($arr, EXTR_OVERWRITE);
	}
}
Während dies bei $_GET, $_POST und $_COOKIE funktioniert, klappt es bei $_SESSION und $_SERVER nicht.

Das führt dazu, dass die Variablen $PHP_SELF, $QUERY_STRING nicht mehr zur Verfügung stehen, da sie aus der Superglobalen $_SERVER nicht extrahiert konnten. Diese Variablen werden aber weiterhin im Contenido-Core verwendet, z. B. in der conlib/session.inc.

Ich persönlich bin der Meinung, dass dieser Umstand behoben werden sollte, und zwar am besten dadurch, in dem das Vorkommen von $PHP_SELF und $QUERY_STRING gegen $_SERVER['PHP_SELF'] und $_SERVER['QUERY_STRING'] ersetzt wird und in der globals_off.inc.php aufgrund der Abwärtskompatibilität die Zeilen

Code: Alles auswählen

$PHP_SELF = $_SERVER['PHP_SELF']
$QUERY_STRING = $_SERVER['QUERY_STRING']
reinkommen. Dann haben noch alte Module u. Plugins sozusagen eine Galgenfrist...

Grüße
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
Gesperrt