Ist $ HTTP_XXX_VARS anders als $ _XXX in PHP?

8

Macht der folgende Code Sinn ?:

%Vor%

Soweit ich weiß, ist $HTTP_XXX_VARS gleich mit $_XXX , außer dass $HTTP_XXX_VARS veraltet ist. Daher verstehe ich den obigen Code nicht.

Gibt es einen Fall, in dem zwei Variablen in einem alten System anders sind, in dem $HTTT_XXX_VARS nicht als veraltet gilt?

    
Jeon 01.05.2015, 14:42
quelle

1 Antwort

4

$HTTP_SERVER_VARS und $_SERVER sind unterschiedliche Variablen (wenn beide gesetzt sind). Sie enthalten anfangs die gleichen Werte, unterscheiden sich jedoch dadurch, dass sich die Änderungen, die das Skript an einem von ihnen vornimmt, nicht auf den anderen auswirken.

Die superglobals ( $_GET , $_POST , $_SERVER etc ) wurden auf PHP 4.1 eingeführt. Die lang benannten Variablen ( $HTTP_GET_VARS , $HTTP_SERVER_VARS usw.) wurden für PHP 4.1 veraltet und sie wurden für PHP 5.4 entfernt.

PHP 5.0 hat die Konfigurationseinstellung register_long_arrays eingeführt wurde verwendet, um PHP anzuweisen, die alten Variablen mit langem Namen zu erstellen (oder nicht) ( $HTTP_GET_VARS und der Rest). Die Einstellung wurde für PHP 5.3 veraltet und zusammen mit PHP 5.4 (zusammen mit den Arrays mit langem Namen) entfernt.

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 Zeile:

%Vor%

nutzt die neue superglobale Variable $_SERVER , falls verfügbar (auf PHP >= 4.1 ), fällt aber auf die alte $HTTP_SERVER_VARS zurück, wenn sie auf der älteren PHP läuft. Es wurde wahrscheinlich vor Jahren geschrieben, während PHP 4 immer noch auf vielen Servern verwendet wurde.

Außer im unwahrscheinlichen Fall, wenn Sie bei PHP 4.0 festsitzen, können Sie die obige Zeile auf folgende Weise ändern:

%Vor%

oder einfach $_SERVER anstelle von $t_server überall verwenden.

    
axiac 01.05.2015, 15:57
quelle

Tags und Links