phpbar.de logo

Mailinglisten-Archive

[php] Einsatz der Superglobals

[php] Einsatz der Superglobals

Beck, Mike php_(at)_phpcenter.de
Mon, 7 Oct 2002 12:44:35 +0200


> Moin Listies,
> In welcher Form verwendet ihr die Superglobals? Nehmt ihr
> schon die neuen
> ($_irgendwas) oder noch die alten ($HTTP_irgendwas_VARS). Aus
> irgendeinem
> Grund will nämlich das folgende Script nicht wirklich funzen:
>
> <script>
> extract ($HTTP_GET_VARS);
> extract ($_GET);  // FEHLERZEILE
> extract ($HTTP_POST_VARS);
> extract ($_POST); // FEHLERZEILE
> </script>
>
> Ergibt jeweils für die neuen Superglobals folgenden Fehler
>
> Warning: Wrong datatype in call to extract() in
> /***/script.php on line xy

für ein Stück Code das ich für phpMyAdmin zum Import von docSQL Dateien
geschrieben hatte, hat mir Loic (ebenfalls PMA Dev) folgenden Code gegeben
(muss ja von php 3.x - php 4.x laufen). Da ging es zwar um DOCUMENT_ROOT,
aber das ist ja genauso geändert, insofern sind die Überlegungen dabei
vielleicht für Dich übertragbar:

/**
 * Try to get the "$DOCUMENT_ROOT" variable whatever is the register_globals
 * value
 */
if (empty($DOCUMENT_ROOT)) {
    if (!empty($_SERVER) && isset($_SERVER['DOCUMENT_ROOT'])) {
        $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
    }
    else if (!empty($HTTP_SERVER_VARS) &&
isset($HTTP_SERVER_VARS['DOCUMENT_ROOT'])) {
        $DOCUMENT_ROOT = $HTTP_SERVER_VARS['DOCUMENT_ROOT'];
    }
    else if (!empty($_ENV) && isset($_ENV['DOCUMENT_ROOT'])) {
        $DOCUMENT_ROOT = $_ENV['DOCUMENT_ROOT'];
    }
    else if (!empty($HTTP_ENV_VARS) &&
isset($HTTP_ENV_VARS['DOCUMENT_ROOT'])) {
        $DOCUMENT_ROOT = $HTTP_ENV_VARS['DOCUMENT_ROOT'];
    }
    else if (_(at)_getenv('DOCUMENT_ROOT')) {
        $DOCUMENT_ROOT = getenv('DOCUMENT_ROOT');
    }
    else {
        $DOCUMENT_ROOT = '';
    }
} // end if

Gruß

Mike Beck


php::bar PHP Wiki   -   Listenarchive