Lori: SERVER-Variablen

Hi,
wenn ich eine in .htaccess definierte Servervariable $_SERVER['MyAltSpr'] im php-Programm folgendermaßen zuordne
$_SERVER['NeuSpr'] = $_SERVER['MyAltSpr'];,
so kann ich in dem Programm diesen neuen Wert verwenden.
In einem mit REQUIRE_ONCE eingebundenen php-Programm ist sie jedoch nicht bekannt.
Ist $_SERVER['NeuSpr'] nicht ebenfalls eine überall bekannte Servervariable?

  1. Hallo,

    wenn ich eine in .htaccess definierte Servervariable $_SERVER['MyAltSpr'] im php-Programm folgendermaßen zuordne
    $_SERVER['NeuSpr'] = $_SERVER['MyAltSpr'];,
    so kann ich in dem Programm diesen neuen Wert verwenden.

    ja, allerdings ist es "unfein", selbst in die von PHP bereitgestellten Arrays zu schreiben. Ich würde eher empfehlen, dafür eine eigene Variable zu verwenden.

    In einem mit REQUIRE_ONCE eingebundenen php-Programm ist sie jedoch nicht bekannt.
    Ist $_SERVER['NeuSpr'] nicht ebenfalls eine überall bekannte Servervariable?

    Doch, so wie du es beschreibst, müsste sie in allen includierten Modulen (egal ob mit include oder require) zur Verfügung stehen - es sei denn, die oben beschriebene Zuweisung wird erst nach dem include-Vorgang ausgeführt.

    So long,
     Martin

    --
    Most experts agree: Any feature of a program that you can't turn off if you want to, is a bug.
    Except with Microsoft, where it is just the other way round.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Hi,

      In einem mit REQUIRE_ONCE eingebundenen php-Programm ist sie jedoch nicht bekannt.
      Ist $_SERVER['NeuSpr'] nicht ebenfalls eine überall bekannte Servervariable?

      Doch, so wie du es beschreibst, müsste sie in allen includierten Modulen (egal ob mit include oder require) zur Verfügung stehen - es sei denn, die oben beschriebene Zuweisung wird erst nach dem include-Vorgang ausgeführt.

      Oder das Einbinden findet über HTTP statt, und nicht im Dateisystem.

      MfG ChrisB

      --
      RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
      1. Hallo,

        [...] es sei denn, die oben beschriebene Zuweisung wird erst nach dem include-Vorgang ausgeführt.
        Oder das Einbinden findet über HTTP statt, und nicht im Dateisystem.

        das macht man ja schon gleich gar nicht - aber stimmt, an die Möglichkeit hatte ich nicht gedacht.

        Ciao,
         Martin

        --
        Gültig sind Frauen ab 16, wohlgeformt ab 160 Pfund.
          (Gunnar Bittersmann)
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      2. Moin,

        Oder das Einbinden findet über HTTP statt, und nicht im Dateisystem.

        Gibt es überhaupt einen sinnvollen Anwendungsfall, in dem man sowas machen könnte? Ich meine, per HTTP holt man sich ja einfach generierten HTML-Code...

        Grüße Marco

        1. Tach!

          Oder das Einbinden findet über HTTP statt, und nicht im Dateisystem.
          Gibt es überhaupt einen sinnvollen Anwendungsfall, in dem man sowas machen könnte?

          Ja, aber file_get_contents() oder readfile() sollte man dann nehmen.

          Ich meine, per HTTP holt man sich ja einfach generierten HTML-Code...

          Nö, per HTTP holt man sich das, was der ausliefernde Server ausgibt. Üblich ist es zwar, dass PHP-Scripts ausgeführt und nur dessen Ausgabe ausgeliefert wird, aber das muss nicht so sein. Zudem kann ja auch das PHP-Script selbst PHP-Code als Ausgabe erzeugen.

          dedlfix.

    2. Hallo,

      Doch, so wie du es beschreibst, müsste sie in allen includierten Modulen (egal ob mit include oder require) zur Verfügung stehen - es sei denn, die oben beschriebene Zuweisung wird erst nach dem include-Vorgang ausgeführt.

      Ja, ja "es sei denn....".
      Genau das war falsch!
      Ich dnake Euch allen.

  2. Moin,

    wenn ich eine in .htaccess definierte Servervariable $_SERVER['MyAltSpr'] im php-Programm folgendermaßen zuordne
    $_SERVER['NeuSpr'] = $_SERVER['MyAltSpr'];,
    so kann ich in dem Programm diesen neuen Wert verwenden.

    Warum solltest du das tun? Was nützt dir der exakt gleiche Wert doppelt in einem Array? Und selbst, wenn du einen Wert veränderst, kannst du doch eine andere Variable bzw. ein anderes Array zum Speichern verwenden als das $_SERVER-Array.

    In einem mit REQUIRE_ONCE eingebundenen php-Programm ist sie jedoch nicht bekannt.
    Ist $_SERVER['NeuSpr'] nicht ebenfalls eine überall bekannte Servervariable?

    Offensichtlich nicht. Ich verstehe nicht ganz, welchen Zweck du damit verfolgst. Entweder du speicherst den Wert aus dem Serverarray in eine eigene Variable

    $newVar = $_SERVER["MyAltSpr"];

    dann ist diese Variable auch in einem Skript verfügbar, welches diese Datei per require_once() einbindet. Oder du verwendest Sessions; dann hättest du ein superglobales Array, auf das du von überall her zugreifen kannst, auch _ohne_, dass du mit require_once() oder anderen Einbindungsfunktionen hantieren musst.

    Grüße Marco

    1. Moin,

      Ist $_SERVER['NeuSpr'] nicht ebenfalls eine überall bekannte Servervariable?
      Offensichtlich nicht.

      Offensichtlich doch. Bei mir funktioniert jedenfalls so konstruiertes Skript.
      Eine schöne Lösung sieht aber IMHO anders aus.

      Grüße Marco

      1. Tach!

        Ist $_SERVER['NeuSpr'] nicht ebenfalls eine überall bekannte Servervariable?
        Offensichtlich nicht.
        Offensichtlich doch.

        Generell gesagt: Ein require/include(_once) wirkt immer so, als ob der dortige Code an dieser Stelle stünde. Der Code in der einzubindenden Datei wird keinesfalls in einem separaten Scope ausgeführt. Alles was im Haupt-Script bis dato bekannt ist, ist also auch in dem Code aus der eingebundenen Datei bekannt.

        dedlfix.