register_globals

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    alles klar, bei mir ist php als cgi eingebunden, da ist es nicht notwendig.

    bei php als modul muss der apache einmal ums wigwam gejagt werden

    Kommentar


    • #17
      @Kropff:
      außerdem bin ich der array-schleifen-meister
      das hätt' ich gerne etwas genauer (auf die Gefahr hin, mich zu blamieren)

      PHP-Code:
      function getVars($varname ""$order "EGPCSMR")
      {
          if (!
      $varname) return false;
          
      $order strtoupper($order);
          for (
      $c 0$c strlen($order); $c++) {
              if (
      substr($order,$c,1) == "E"$globals $GLOBALS['_ENV'];
              if (
      substr($order,$c,1) == "G"$globals $GLOBALS['_GET'];
              if (
      substr($order,$c,1) == "P"$globals $GLOBALS['_POST'];
              if (
      substr($order,$c,1) == "C"$globals $GLOBALS['_COOKIE'];
              if (
      substr($order,$c,1) == "S"$globals $GLOBALS['_SERVER'];
              if (
      substr($order,$c,1) == "M"$globals $GLOBALS['_SESSION'];
              if (
      substr($order,$c,1) == "R"$globals $GLOBALS['_REQUEST'];
              
      $keys array_keys($globals);
              for (
      $cc 0$cc count($keys); $cc++) {
                  
      $key $keys[$cc];
                  if (
      $key == $varname) {
                      $
      $key $globals[$key];
                      
      $cc count($keys);
                      
      $c strlen($order);
                  }
              }            
          }
          if (isset(
      $key) && isset($$key)) return $$key;
          else return 
      false;

      Die "Herausforderung" für Kropff (alle anderen dürfen sich auch beteiligen ) ist es nun, diese Funktion zu verbessern.
      Wer es nicht gleich erkannt hat, mit dieser Funktion lassen sich die Variablen aus den Super-Globals von PHP (im übrigen schon seit Version 4.0.3 dabei!) lesen. Dazu muß lediglich der Variablen Name an diese übergeben werden. Ein Umprogrammieren von Scripten welche für register-globals = on programmiert wird dadurch sehr viel einfacher.
      PHP-Code:
      // unter Verwendung der Beispiele auf Kropff's HP
      echo ($id);
      //wird zu
      echo(getVars('id')); 
      cu Charles

      ps.: Sorry wegen der Seitenbreite! Aber:
      1. Ich bin rein zufällig auch Entwickler und mich stört's nicht, wenn ich auch mal seitwärts scrollen muss.
      2. In der Vorschau ist kein V-Scroll zusehen, und alles über "CR's" selbst zu steuern ist mir viel zu Zeitaufwendig!
      3. Es gibt da ein CSS-Attribut (white-space: wrap) mit dem man das simpelst automatisieren kann.
      Zuletzt geändert von Charles Monroe; 05.09.2006, 17:02.

      Kommentar


      • #18
        Das Umprogrammieren von Scripten, die register_globals = on erwarten, mag ein kleines bißchen schneller gehen - einfach getVars(x) schreiben, statt überlegen, woher die Variable kommt.
        Aber wenn jemand wirklich auf die Sicherheit von register_globals = off verzichten möchte, ist er noch schneller, wenn er in jedes Script per require_once eine Datei einbindet, die in der Reihenfolge der variables_order (die du übrigens völlig unbeachtet läßt!) einfach alles mit extract() globalisiert.

        Kommentar


        • #19
          ... die in der Reihenfolge der variables_order (die du übrigens völlig unbeachtet läßt!)
          Das ich die "variable_order" unbeachtet lasse, geschieht nur aus dem Grund, da ich sie selbst einbinde. Das ist darauf zurückzuführen, da man an diese (afaik) nur "gpc" (also get, post, cookie in allen Variationen) übergeben kann. Hinzukommt, das meine Funktion in PHP eigentlich sowieso schon vorhanden ist, aber die Variablen eben nur aus "gpc" liest. Ferner lässt sich die "variable_order" bei entsprechenden Einstellungen dort zur Laufzeit nicht mehr ändern, was bei mir ja der Fall ist.

          Zum zweiten: Diese Funktion funktioniert natürlich auch, wenn "register_globals = on" ist. Allerdings ist sie so natürlich völlig überflüssig. Denn wenn "register-globals = on" ist, sind die übergebenen Variablen eh' stets global! Dann kann man sich im übrigen, wenn man diese nicht unbedingt separat braucht ein "Extrahieren" schenken.

          Im übrigen: Man kann sich auch Gedanken darüber machen woher die Variable kommt:
          PHP-Code:
          getVars("beispiel""gp"); 
          Zuguterletzt hat man als Enwickler und Hoster (auf Fremd-Servern) auf die Serverseitigen Einstellungen nicht immer Einfluss. Deswegen sollte man seine Scripte (so seh' ich das jedenfalls) stets so coden, das möglichst alle Eventualitäten in Betracht gezogen werden, damit man sich späteres Umprogrammieren mehr oder weniger sparen kann, nur weil der Admin des Fremd-Servers mal wieder die Richtlinien ändert oder ein Software-Update durchführt. Okok von PHP 4 auf 5 wird's ein wenig schwierig, aber das gehört ja eh' alles in einen anderen Thread. btt.

          cu Charles
          Zuletzt geändert von Charles Monroe; 05.09.2006, 18:03.

          Kommentar


          • #20
            Okok von PHP 4 auf 5 wird's ein wenig schwierig, aber das gehört ja eh' alles in einen anderen Thread. btt.
            also da hatte ich bisher keine probleme, meine 4er scripte laufen auch sauber auf php5.
            das möglichst alle Eventualitäten in Betracht gezogen werden
            das beinhaltet meines erachtens nach auch das register_globals problem. der einzig wichtige stichpukt zu diesem thema wäre die laufzeit solcher scripte.

            bei unseren kunden wird im schnitt nach drei jahren ein kompletter relaunch gemacht. in diesem zuge ändern sich eigentlich auch immer die anforderungen an die php-scripte. das spielt sich also in eiem überschaubaren zeitlichen rahmen ab. wer hat den heute noch scripte von 2000/2001 laufen? ich nicht.

            gruß
            peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Kommentar


            • #21
              wer hat den heute noch scripte von 2000/2001 laufen?
              Hier!

              Jede menge sogar.. Fängt bei Datensicherung an und hört bei einem Dokumentenarchiv mit Anbindung an eine ERP Software auf.

              An den meisten meiner Final Versionen war ich seit JAHREN nicht mehr dran.. Wozu auch?
              gruss Chris

              [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

              Kommentar


              • #22
                Hier!
                selber schuld

                funktionieren die auch noch bei register_globals = off, oder laufen die im intranet?

                gruß
                peter
                Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                Meine Seite

                Kommentar


                • #23
                  Du hast nur nach Scripten gefragt

                  funktionieren die auch noch bei register_globals = off, oder laufen die im intranet?
                  Beides
                  gruss Chris

                  [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                  Kommentar

                  Lädt...
                  X