Ergebnis 1 bis 1 von 1

Thema: PHP Scripte PHP4/PHP5 portabler machen

  1. #1
    Außer Betrieb Avatar von QuHno
    Registriert seit
    15.05.02
    Ort
    "Provinz voll Leben"
    Beiträge
    8.856

    PHP Scripte PHP4/PHP5 portabler machen

    Ich musste mich letztens mit einer alten PHP4.0.6 Version herumschlagen und habe zu meinem Entsetzen feststellen müssen, dass diverse Superglobale Variablen wie z.B. $_GET oder $_SERVER nicht zur Verfügung standen.

    Ein Blick ins PHP Manual offenbarte jedoch, dass in älteren Versionen vergleichbare Konstrukte mit ähnlichen Eigenschaften existieren, sie heißen bloß anders.

    Lösung:
    Falls die benötigten Variablen nicht vorhanden sind, referenziert man sie auf die älteren, ein "Trick" wie er des öfteren in C benutzt wird (Stichworte: Pointer, Handle ), der aber in PHP genau so gut funktioniert.

    So geht's:
    PHP-Code:
    <?php
        
    if (!isset($_SERVER)){$_SERVER = &$HTTP_SERVER_VARS;}
        if (!isset(
    $_GET)){$_GET = &$HTTP_GET_VARS;}
        if (!isset(
    $_POST)){$_POST = &$HTTP_POST_VARS;}
        if (!isset(
    $_ENV)){$_ENV = &$HTTP_ENV_VARS;}
        if (!isset(
    $_COOKIE)){$_COOKIE = &$HTTP_COOKIE_VARS;}
        if (!isset(
    $_FILES)){$_FILES = &$HTTP_POST_FILES;}
        if (!isset(
    $_SESSION)){$_SESSION = &$HTTP_SESSION_VARS;}
        if (!isset(
    $_REQUEST)){$_REQUEST array_merge($_GET$_POST$_COOKIE);}
    ?>
    Man beachte die kleinen & vor den Variablen, die erledigen den Trick

    Dies kann vor allen anderen Funktionsaufrufen oder Befehlen - außer session_start(); - eingesetzt werden und "mappt" die Variablen bei Bedarf um. Die meisten Scripte sollten danach problemlos ohne Änderungen sowohl unter PHP4 als auch PHP5 laufen.

    Leider habe ich noch keine Möglichkeit gefunden, wie ich $_REQUEST auch superglobal machen kann, also bitte immer nur in einem Script benutzen oder entsprechend übergeben.


    edit:
    Es geht in den meisten Fällen auch kürzer, aber das kann bei Versionen kleiner als PHP 4.0.6 schief gehen:

    PHP-Code:
    <?php 
    if (!isset($_SERVER)){
        
    $_SERVER = &$HTTP_SERVER_VARS
        
    $_GET = &$HTTP_GET_VARS;
        
    $_POST = &$HTTP_POST_VARS;
        
    $_ENV = &$HTTP_ENV_VARS;
        
    $_COOKIE = &$HTTP_COOKIE_VARS;
        
    $_REQUEST array_merge($_GET$_POST$_COOKIE);
    }
    if (!isset(
    $_FILES)){$_FILES = &$HTTP_POST_FILES;} 
    if (!isset(
    $_SESSION)){$_SESSION = &$HTTP_SESSION_VARS;} 
    ?>
    Geändert von QuHno (27.04.09 um 21:29 Uhr)

  2.   Anzeige

     

Ähnliche Themen

  1. [PHP] PHP5 + IIS5: MySQL-Library kann nicht gefunden werden..
    Von Galaxydriver im Forum Programmierung & Webdesign
    Antworten: 1
    Letzter Beitrag: 04.11.06, 12:32
  2. [PHP] 2 Inputs abhängig voneinander machen ??
    Von Natheedo im Forum Programmierung & Webdesign
    Antworten: 0
    Letzter Beitrag: 02.02.06, 23:18
  3. php4 nachträglich installieren ???
    Von palme|kex` im Forum Alles rund um Linux
    Antworten: 4
    Letzter Beitrag: 19.04.05, 16:21
  4. Antworten: 2
    Letzter Beitrag: 03.01.05, 21:42
  5. wie bringe zum laufen php scripte und .htaccess ?
    Von ccc im Forum Alles rund um Linux
    Antworten: 5
    Letzter Beitrag: 19.01.04, 10:46

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •