Thomas: $HTTP_SESSION_VARS =& $_SESSION

Beitrag lesen

Hallo zusammen.

Ich versuche gerade PHP-Skripte von ~2003 in einer neueren PHP-Umgebung zum Laufen zu bringen.

Viele Probleme habe ich bereits dadurch beheben können:

$HTTP_POST_VARS   = !empty($HTTP_POST_VARS)   ? $HTTP_POST_VARS   : $_POST;  
$HTTP_GET_VARS    = !empty($HTTP_GET_VARS)    ? $HTTP_GET_VARS    : $_GET;  
$HTTP_COOKIE_VARS = !empty($HTTP_COOKIE_VARS) ? $HTTP_COOKIE_VARS : $_COOKIE;  
$HTTP_SERVER_VARS = !empty($HTTP_SERVER_VARS) ? $HTTP_SERVER_VARS : $_SERVER;  
$HTTP_POST_FILES  = !empty($HTTP_POST_FILES)  ? $HTTP_POST_FILES  : $_FILES;

Allerdings gibt es ein Problem bei Sessions.

Hier mal ein Beispiel zur Verdeutlichung:

<?php  
  function init_session() { // Funktion die von jedem Skript vor der Session-Benutzung aufgerufen wird  
    session_start();  
    global $HTTP_SESSION_VARS;  
    $HTTP_SESSION_VARS =& $_SESSION; // Referenzzuweisung, $_SESSION ist global, daher müsste es auch nach dem Funktionsscope noch exisiteren (so meine Theorie)  
  }  
  init_session(); // Aufruf der Funktion  
  if (empty($HTTP_SESSION_VARS['value'])) { // Test  
    $HTTP_SESSION_VARS['value'] = 1;  
  }  
?>

Zum Ende müsste dann also $HTTP_SESSION_VARS['value'] auf 1 gesetzt sein. Da $HTTP_SESSION_VARS eine Referenz von $_SESSION sein soll, müsste also eigentlich auch $_SESSION['value'] den Wert 1 enthalten.
Tut es aber leider nicht. Nach dem Funktionsaufruf sind $HTTP_SESSION_VARS und $_SESSION 2 Arrays die nichts mehr miteinander zu tun haben.

Ich nehme an, dass PHP dem Nutzer vorgaukelt, dass das Array wirklich global ist und es in Wahrheit für jeden Scope neu erzeugt. Weiß jemand mehr?

Und hat jemand eine Idee wie man das Problem lösen kann?

Danke!
Thomas