$HTTP_SERVER_VARS
und $_SERVER
sind unterschiedliche Variablen (wenn beide gesetzt sind). Sie enthalten anfänglich die gleichen Werte, unterscheiden sich jedoch von den Änderungen, die das Skript für eines von beiden bewirkt, nicht für das andere.
Die superglobals
($_GET
, $_POST
, $_SERVER
etc) wurden auf PHP 4.1
eingeführt. Die lange benannten Variablen ($HTTP_GET_VARS
, $HTTP_SERVER_VARS
usw.) wurden auf PHP 4.1
veraltet und sie wurden auf entfernt.
PHP 5.0
eingeführt, um die Konfiguration register_long_arrays
Einstellung, die PHP
zu sagen, verwendet wurde (oder nicht), die alten Lang benannten Variablen zu erstellen ($HTTP_GET_VARS
und der Rest). Die Einstellung wurde auf PHP 5.3
eingestellt und zusammen mit entfernt (zusammen mit den Arrays mit den langen Namen). Wie Sie sehen können, waren zwischen PHP 4.0
und PHP 5.4
eine oder beide Versionen dieser Variablen für den Programmierer verfügbar.
Die Linie:
$t_server = isset($_SERVER) ? $_SERVER : $HTTP_SERVER_VARS;
nutzt die neuen superglobalen Variable $_SERVER
, falls vorhanden (auf PHP >= 4.1
), aber es fällt wieder auf die alte $HTTP_SERVER_VARS
wenn es auf älteren PHP
läuft. Es wurde wahrscheinlich vor Jahren geschrieben, während PHP 4
immer noch auf vielen Servern im Einsatz war.
$t_server = $_SERVER;
oder nur $_SERVER
überall statt $t_server
verwenden:
Außer auf dem unwahrscheinlichen Fall, wenn Sie mit PHP 4.0
stecken, können Sie sicher die obige Zeile ändern.
In PHP3 und früher war $ _SERVER nicht vorhanden. Dieser Code möchte offensichtlich auf sehr alten PHP-Installationen funktionieren. – kainaw
@kainaw: gute Annahme, aber isset() ist in PHP4 angekommen. Wahrscheinlich hat der Autor dieser Zeile die Dokumente zu schnell gelesen =) –
@Jeon: Also, wenn Sie diese Zeile korrigieren möchten, können Sie. Dies wird keinen Vorfall haben. Die Dokumente sprechen nicht über Unterschiede von einer Version zur anderen, auch die Kommentare. Dies ist nur eine variable Umbenennung, um konsistenter mit der Nomenklatur der anderen Superglobalen zu sein. –