Christof: PHP.ini und register_globals

Hallo.
Ich habe folgendes Problem:
Ich kann in einem PHP Script die Vriablen,die mit der URL übergeben wurden zwar via $HTTP_GET_VARS ansprechen, aber nicht direkt. Sie sind also nicht global.
Kann es sein, das mein Provider in der php.ini die Variable
register_globals=true;
setzen muß?
MfG
Christof

  1. Hallo.

    Tag!

    Ich habe folgendes Problem:
    Ich kann in einem PHP Script die Vriablen,die mit der URL übergeben wurden zwar via $HTTP_GET_VARS ansprechen, aber nicht direkt. Sie sind also nicht global.
    Kann es sein, das mein Provider in der php.ini die Variable
    register_globals=true;
    setzen muß?
    MfG
    Christof

    Ist ab PHP 4.1.X (ich glaube da war das) immer per default auf false. Weil:
    ; - register_globals = Off         [Security, Performance]
    ;     Global variables are no longer registered for input data (POST, GET, cookies,
    ;     environment and other server variables).  Instead of using $foo, you must use
    ;     you can use $_REQUEST["foo"] (includes any variable that arrives through the
    ;     request, namely, POST, GET and cookie variables), or use one of the specific
    ;     $_GET["foo"], $_POST["foo"], $_COOKIE["foo"] or $_FILES["foo"], depending
    ;     on where the input originates.  Also, you can look at the
    ;     import_request_variables() function.
    ;     Note that register_globals is going to be depracated (i.e., turned off by
    ;     default) in the next version of PHP, because it often leads to security bugs.
    ;     Read http://php.net/manual/en/security.registerglobals.php for further
    ;     information.

    Mit anderen Worten: Wer ordentlichen Code baut, der braucht das nicht...

    Ich glaube also nicht, das Dein Provider das für Dich einschaltet...

    bye
    ich

    1. Ist ab PHP 4.1.X (ich glaube da war das) immer per default auf false.

      seit 4.2.0

      Mit anderen Worten: Wer ordentlichen Code baut, der braucht das nicht...

      Wenn man ordentlich programmiert, ist auch eingeschaltetes register_globals kein Risiko.

      Ich glaube also nicht, das Dein Provider das für Dich einschaltet...

      du kannst das u.U. auch selber für dich mittels .htaccess einschalten, siehe PHP-Dokumentation.

      1. Hallo,

        du kannst das u.U. auch selber für dich mittels .htaccess einschalten, siehe PHP-Dokumentation.

        hm, man kann einstellungen der zentralen php.ini in den verzeichniseigenen apache konfigurationsdateien ändern??? Kannst du mir bitte verraten, wo das in der " PHP-Dokumentation" zu finden ist?

        lg,
        rob.

        1. hm, man kann einstellungen der zentralen php.ini in den verzeichniseigenen apache konfigurationsdateien ändern??? Kannst du mir bitte verraten, wo das in der " PHP-Dokumentation" zu finden ist?

          Im Kapitel Konfiguration unter Konfigurationsdatei. siehe http://www.php.net/manual/en/configuration.php#configuration.file
          Voraussetzung ist natürlich, dass das per AllowOverride erlaubt ist und das PHP als Apache-Modul geladen ist (siehe diese Seite).
          Also in diesem Fall wäre das einfach
          php_flag register_globals on
          an eine entsprechende Stelle.
          Das Thema hatten wir aber doch schon mehrfach hier gehabt, benutze mal die Forumssuche.

          1. Im Kapitel Konfiguration unter Konfigurationsdatei. siehe http://www.php.net/manual/en/configuration.php#configuration.file
            Voraussetzung ist natürlich, dass das per AllowOverride erlaubt ist und das PHP als Apache-Modul geladen ist (siehe diese Seite).
            Also in diesem Fall wäre das einfach
            php_flag register_globals on
            an eine entsprechende Stelle.
            Das Thema hatten wir aber doch schon mehrfach hier gehabt, benutze mal die Forumssuche.

            OK, sorry. Es funkt aber trotzdem nicht unter Apache/2.0.36 (Win32) PHP/4.2.1. Es gibt hier überhaupt nur mehr 2 erlaubte apache direktiven fürs PHP modul: php_value und php_admin_value. Das php_flag gibts also offenbar nicht mehr. Siehe die entsprechende ausgabe von mod_info:

            Module Name: sapi_apache2.c
            Content handlers: none
            Configuration Phase Participation: Create Directory Config, Merge Directory Configs
            Request Phase Participation: Post-Read Request
            Module Directives:
            php_value - PHP Value Modifierphp_admin_value - PHP Value ModifierCurrent Configuration:
            php_value register_globals on

            Trotzdem gibt phpinfo() aus:

            register_globals Off

            Nicht, dass ich was gegen ein register_globals = off habe, ganz im gegenteil - trotzdem würde ich gerne wissen, ob es tatsächlich funktioniert, in der apache conf PHP direktiven zu überschreiben.

            rob.

            1. Nicht, dass ich was gegen ein register_globals = off habe, ganz im gegenteil - trotzdem würde ich gerne wissen, ob es tatsächlich funktioniert, in der apache conf PHP direktiven zu überschreiben.

              Ich habe es selber bei mir ausprobiert, mit Apache 1.3.24 / PHP 4.2.1 unter Win funktioniert es auf jeden Fall, ein in der php.ini gesetztes register_globals = on mit off zu überschreiben.
              in der phpinfo gibt es ja auch Local Value und Master Value.