[PHP5] Variable überschreibt Session

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

  • [PHP5] Variable überschreibt Session

    Hallo,

    sicher ist mein Problem nicht unbekannt, ich weiss allerdings nicht wirklich wie ich Suchmaschinen dannach durchforsten soll.

    ALSO:

    Ich arbeite mit Sessions (sureName, foreName), diese werden mit
    PHP-Code:
    $_SESSION['sureName'] = XXX
    $_SESSION
    ['sureName'] = YYY 
    erstellt- So weit, so gut.

    Nun habe in einer Formularseite eine Zuweisung der Variablen $sureName und $foreName (der Variablen, nicht der Sessions), trotzdem sind ab dem Zeitpunkt die Sessions mit den Werten der Variablen überschrieben.

    Ich arbeite mit Apache/2.0.59 (Win32) PHP/5.2.1 mod_ssl/2.0.49 OpenSSL/0.9.8c

    Danke mit vorraus

  • #2
    Register_globals=On (und oder) veralterter Quellcode
    Wir werden alle sterben

    Kommentar


    • #3
      Zeig mal ne kurzen Demo-Code.

      Kommentar


      • #4
        hier der Code

        Ja ich habe register_globals eingeschalten.
        Und damit kann man Variablen per Url überschreiben, aber Sessions ?

        Dieser Teil steht im Login
        PHP-Code:
        $_SESSION["sureName"] = $row->sureName;
        $_SESSION["foreName"] = $row->foreName
        In einer Anderen Site brauche ich die Variablen sureName und foreName

        PHP-Code:
        $sureName $rowUsers->sureName;
        $foreName $rowUsers->foreName
        .. und ab jetzt steht in den Sessions der selbe Wert wie in den Variablen.

        Kommentar


        • #5
          naja weil sie ja bei Register Globals On das selbe sind.

          PHP-Code:
          $_SESSION['a']=1;
          $a=2;

          echo 
          $a;
          echo 
          $_SESSION['a']; 
          wenn register globals auf on steht ergeben die beiden echo x) beides eine 2;
          bei OFF wird erst eine 2 und dann eine 1 ausgegeben weil

          $_SESSION['a'] dann != $a ist.

          ps: register globals sollten eigentlich IMMER auf OFF stehen alles andere ist ein sicherheitsrisiko
          Bitte Beachten.
          Foren-Regeln
          Danke

          Kommentar


          • #6
            ja, da hast du wohl recht

            Heute weiß ich das globals ein Sicherheitsrisiko ist, blöderweise laufen auf dem Server auch "alte" Anwendungen, d.h. ich kann derzeit nicht auf register_globals verzichten.

            Habe aber für das aktuelle Projekt aufgrund des ersten Posts auf COOKIES umgestellt.
            Diese fülle ich mit mehreren Werten, und wenn ich diese Werte dann brauche lasse ich die Cookies mit explode in einen Array schreiben, und kann dann, wenn ich die richtige Position weiss wieder darauf zugreifen.

            DANKE für eure Hilfe.

            Kommentar


            • #7
              ich habe mir mal für uralt scripte einen kleinen parser gemacht, der register_global OFF umgeht. einfach am anfang des scripts einfügen.
              PHP-Code:
                $types_to_register = array('POST','GET');
                  foreach (
              $types_to_register as $global_type)
                  {
                      
              $arr = @${'HTTP_'.$global_type.'_VARS'};
                      if (@
              count($arr) > 0extract($arrEXTR_OVERWRITE);
                      else
                      {
                          
              $arr = @${'_'.$global_type};
                          if (@
              count($arr) > 0extract($arrEXTR_OVERWRITE);
                      }
                  } 
              wenn du dir des sicherheitsrisikos bewusst bist, bekommst du damit auch alte scripte ans laufen, wenn register_global=OFF steht.

              Kommentar


              • #8
                PHP-Code:
                /*
                Problem mit Register Globals On das lokale Variablen in der Session überschreibt.
                __PHP_Incomplete_Class
                powered by ghostgambler
                */
                if (ini_get('register_globals')) {
                    if (!empty(
                $_SESSION)) {
                        foreach (
                $_SESSION as $key => $value) {
                            unset($
                $key);
                        }
                    }

                Das Problem hatte ich in Sunshine CMS, da wurde mir eine komplette Instanz in die Session geschrieben... Der Schnipsel behebt das Problem.
                Zuletzt geändert von Benny-one; 10.10.2007, 15:23.
                Sunshine CMS
                BannerAdManagement
                Borlabs - because we make IT easier
                Formulargenerator [color=red]Neu![/color]
                Herkunftsstatistik [color=red]Neu![/color]

                Kommentar


                • #9
                  tsk benny, dass du das von mir hast, hättest du wenigstens mal anmerken können >_>

                  Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                  bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                  Wie man Fragen richtig stellt

                  Kommentar


                  • #10
                    Du kannst die PHP-Variablen auch per htaccess abschalten. Wenn du einen Server hast, ist das sicher am einfachsten!

                    Kommentar


                    • #11
                      Original geschrieben von PHP-Desaster
                      Du kannst die PHP-Variablen auch per htaccess abschalten. Wenn du einen Server hast, ist das sicher am einfachsten!
                      Geht nicht überall. Und wenn er nen Server hat, kann er es auch gleich in der php.ini abschalten.
                      Sunshine CMS
                      BannerAdManagement
                      Borlabs - because we make IT easier
                      Formulargenerator [color=red]Neu![/color]
                      Herkunftsstatistik [color=red]Neu![/color]

                      Kommentar


                      • #12
                        Original geschrieben von Benny-one
                        Geht nicht überall. Und wenn er nen Server hat, kann er es auch gleich in der php.ini abschalten.
                        Da hast du recht, das geht nicht immer! Aber vollständigkeitshalber wollt ichs mal mit reinwerfen

                        Kommentar


                        • #13
                          Original geschrieben von sysop123
                          ich habe mir mal für uralt scripte einen kleinen parser gemacht,
                          Noch einfacher: import_request_variables()
                          Gruss
                          H2O

                          Kommentar

                          Lädt...
                          X