Scripte laufen auf PHP4.0.x aber auf PHP4.1.x nicht mehr

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

  • Scripte laufen auf PHP4.0.x aber auf PHP4.1.x nicht mehr

    Mein altes Script ist lauffähig nur auf PHP4.0.3 oder niedriger. Habe seit kurzem meinen Provider gewechselt und mußte feststellen, daß mein Script nicht mehr läuft.
    Liegt daran, daß mein Provider PHP4.1.0.x oder höher verwendet. Mein Script läuft nur dann, wenn ich in der phpini-Datei register_globals auf ON schalten lasse. Dadurch verursache ich eine Sicherheitslücke auf meinem Server. Darauf hat mich mein Provider hingewiesen.
    Aus meiner Sicht müßte ich das gesamte Script umschreiben. Dazu mangelt es mir an Kenntnissen.

    Gib es auch noch eine andere Lösung, die vielleicht etwas einfacher ist und keine Sicherheitslücke öffnet ????

  • #2
    Salut Posty

    tja dann bleibt dir nichts anderes übrig, als deinen gesamten Code durchzuackern und alle Probs im Zusammenhang mit register_globals=off so umzuschreiben, dass sie nicht mehr auftreten.
    Habe übers Wochende alle meine Scripts auf PHP5 umgemodelt. Funzt einwandfrei.
    Es ist u.U. eine grössere Arbeit, aber man lernt viel über PHP dabei.

    Ich würde aber auf jeden Fall register_globals = off belassen

    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Danke jahlives.

      Wenn ich nur wüßte wie?

      Seit ca. 1,5 Monaten beschäftige ich mich nun mit PHP. In mühevoller Kleinarbeit habe ich heraus gefunden, warum mein Script nicht läuft.
      Es verwendet bei der Übertragung der Daten von einer Datei in die andere nur $name. Dieser Befehl unterstützt PHP4.1.x nicht mehr. Ich müßte den Befehl $HTTP_POST(oderGET)_VARS verwenden.

      Wo setze ich diesen denn nun ein?

      Wäre toll,wenn Du mir weiterhelfen könntest!

      Gruß posty

      Kommentar


      • #4
        Salut Posty

        Ich müßte den Befehl $HTTP_POST(oderGET)_VARS verwenden.
        1. Das ist kein Befehl sondern ein Array

        Es scheint bei dir so zu sein, dass der User durch eine Eingabe oder so, die Var $name kreiert. Mit globals on kannst du direkt mit $name arbeiten. Wenn globals off, dann musst du wissen, ob diese Var aus einer POST-oder GET-Abfrage stammt.

        Im Falle von Post musst du dann $name mit $HTTP_POST_VARS['name'] ersetzten.

        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          also du schaust dir das HTML-Formular an, alles was du an Elemente zwischen <form ... > und </form> findest, mußt du ersetzen. Nun mußt du noch schauen was in method steht, bei method="post" nimmst du $HTTP_POST_VARS['varname'], bei method="get" oder gar keine angegeben nimmst du $HTTP_GET_VARS usw. Bei Variable in der URL grundsätzlich immer $HTTP_GET_VARS.

          Andererseits überprüfe mal per phpinfo() wasfür eine Version du drauf hast, wenn >= Version 4.1.0 dann anstatt $HTTP_POST_VARS nimmst du bitte $_POST und $_GET für $HTTP_GET_VARS.

          Für Dateiupload schaust du dir die Verwendung von $_FILES im Manual an. Die Serverdaten sowie Information aus dem HTTP-Header bekommst du über $_SERVER.

          wenn du nicht weißt, durch was du die Variable ersetzen mußt, hilft dir:

          - print_r($_POST);
          - print_r($_GET);
          - print_r($_FILES);
          - print_r($_SERVER);
          - print_r($_ENV);
          - print_r($_COOKIES);

          immer. Na dann viel Spaß bei Umstellen.

          Kommentar


          • #6
            Danke,Danke

            D.h., wenn Variablen von einem Script zum anderen übertragen werden (mit der Methode get/post) muß ich die Variablen jetzt mit

            $HTTP_GET_VARS - bei methode="get"
            oder
            $HTTP_POST_VARS - bei methode="post"

            auslesen?

            Wenn das so richtig ist, da kommt ja eine Menge schreiberei auf mich zu

            Ich habe gerade nachgeschaut. Mein Server verwendet PHP4.3.3
            Danke Euch beiden !!!!

            posty

            Kommentar


            • #7
              Original geschrieben von posty
              Wenn das so richtig ist, da kommt ja eine Menge schreiberei auf mich zu
              $_GET, $_POST etc. reicht, spart ca. 60%
              Kissolino.com

              Kommentar


              • #8
                In einem PHP-Script, das u.a. auf meinem Server läuft, habe ich folgende Befehle im Script-Anfang gefunden.

                PHP-Code:
                // Fatal messages goes here

                $FATAL = array();

                // Check if important arrays are found and define them if missing
                if (!is_array($_SERVER)
                {
                    global 
                $_SERVER;
                    
                $_SERVER $GLOBALS[_SERVER];
                }
                if (!
                is_array($HTTP_GET_VARS))
                {
                    global 
                $HTTP_GET_VARS;
                    
                $HTTP_GET_VARS $GLOBALS[HTTP_GET_VARS];
                }
                if (!
                is_array($HTTP_POST_VARS))
                {
                    global 
                $HTTP_GET_VARS;
                    
                $HTTP_POST_VARS $GLOBALS[HTTP_POST_VARS];
                }

                // Register important variables and arrays
                if (!ini_get("register_globals"))
                {
                    
                import_request_variables('GPC');

                Könnte ich diese bei meinem Script auch nur einfügen ?
                Oder sollte ich lieber die Finger davon lassen ???

                posty
                Zuletzt geändert von posty; 04.10.2004, 22:15.

                Kommentar

                Lädt...
                X