php.ini, register_globals=on, aber doch off ?

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von Thommy, 10.03.2004.

  1. Thommy

    Thommy Thread Starter MacUser Mitglied

    Beiträge:
    1.833
    Zustimmungen:
    0
    MacUser seit:
    23.06.2003
    Hi,

    ich habe einen Apache Webserver + phpMyadmin, Mysql und natürlich PHP.
    Wenn ich nun in der php.ini die register_globals auf "on" setze, ist es dann aber trotzdem off! Ich habe dazu zum Test eine kleine PHP Datei die folgendes enthält:

    echo $_GET[test];
    echo $test;
    phpinfo();

    Damit will ich nur testen, ob die globals wieder an sind, $_GET[test] wird natürlich richtig ausgegeben, allerdings $test nicht. Mit der phpinfo schau ich dann nach, ob meine Einstellungen übernommen wurden. Bei allen vorherigen Änderungen, war die Änderung dann auch richtig in der phpinfo verzeichnet. Allerdings scheint er die register_globals zu ignorieren ... denn sie stehen in der phpinfo auf "off". Das kann doch nicht sein?! Die sind 100% auf on gesetzt.
    Ist dieser Wert noch von anderen Einstellungen abhängig oder wie krieg ich diese blöden globals an? :)

    Vielen Dank
    Gruß
    Thomas
     
  2. bondiblue

    bondiblue MacUser Mitglied

    Beiträge:
    258
    Zustimmungen:
    0
    MacUser seit:
    27.10.2001
    hallo

    ich vermute das es ein versionproblem von php ist.

    $_GET ist eine "super"variable die nur ab eine bestimmte version von php (glaube 4.x) unterstutzt wird. um das auszuprobieren würde ich ein test machen und die alte schreibform $HTTP_GET_VARS[$test] einbinden ()natürlich nicht vergessen sie als global aufzurufen(global $HTTP_GET_VARS; ).
    falls es klappt dann ist es ein versionsproblem... lösung: alte schreibweise oder update.

    lg
    bb
     
  3. bondiblue

    bondiblue MacUser Mitglied

    Beiträge:
    258
    Zustimmungen:
    0
    MacUser seit:
    27.10.2001
    PHP:
    <?php
    $_GET
    ["test_neu"]="neue version, globals on!!!";

    test();
    phpinfo();

    function 
    test()
    {
    global 
    $HTTP_GET_VARS;

    $HTTP_GET_VARS["test_alt"]="alteversion, globals on!!!";

    if (empty(
    $_GET["test_neu"] AND $HTTP_GET_VARS["test_alt"]))
    print(
    "globals OFF !!!");
    else
    print(
    "".$_GET["test_neu"]."ps die alte schreibweise funktioniert bei der neuen version auch: ".$HTTP_GET_VARS["test_alt"]."");

    }
    ?>
    hoffe es hilft
     
    Zuletzt bearbeitet: 10.03.2004
  4. Thommy

    Thommy Thread Starter MacUser Mitglied

    Beiträge:
    1.833
    Zustimmungen:
    0
    MacUser seit:
    23.06.2003
    Hi,

    erstmal vielen dank für deine Mühe! Aber ich glaube ich hab mich irgendwie krumm ausgedrückt, sorry :) Die _GET und HTTP_GET_VARS funktionieren ja, und genau das ist mein Problem :)

    z.b.: index.php?test=hallo

    Wenn in der php.ini die register_globals = on, sind, dann müsste ein echo von $test auch "hallo" ergeben, aber das tuts ja bei mir nur mit _GET[test] etc.
    Leider habe ich viele Skripte die register_globals benötigen ...also die ohne _GET und HTTP_GET_VARS arbeiten.
    Daher meine Frage, was ich da falsch gemacht habe, denn in der php.ini sind die register_globals auf on, nur wird die angabe aus irgendeinem grund ignoriert..
     
  5. bondiblue

    bondiblue MacUser Mitglied

    Beiträge:
    258
    Zustimmungen:
    0
    MacUser seit:
    27.10.2001
    hm verstehe ich nicht :)

    also du kanns über get keine variable überschreiben sondern nur eine get variable.

    also in der index.php müsste sowas sein:


    $test=$_GET["test"];

    echo $test;
     
  6. Thommy

    Thommy Thread Starter MacUser Mitglied

    Beiträge:
    1.833
    Zustimmungen:
    0
    MacUser seit:
    23.06.2003
    &nbsp;
    register_globals sind ja dafür da, das übergebene variablen, in der php datei sofort als gleichnamige variable bereitstehen. also index.php?test=hallo würde halt sofort als $test mit inhalt "hallo" bereitstehen, ohne $_GET etc.
    Genau das geht ja bei mir nicht, bei mir gibt es keine Variable $test. Ich hab halt scripte die mit vielen Variablen in Formularen arbeiten, und da ich keine Lust habe die umzuschreiben und alles mit $_GET[variabelname] zu betiteln, brauche ich die register_globals. und die sind in der php.ini auf "on" gestellt, nur wird es ignoriert und es ist trotzdem off, so dass $test nicht existiert.
     
  7. Delmar

    Delmar MacUser Mitglied

    Beiträge:
    803
    Zustimmungen:
    1
    MacUser seit:
    28.09.2002
    Welche php.ini hast Du denn editiert - bzw. wie hast Du sie editiert?

    Wenn allerdings in der phpinfo()-Ausgabe drinsteht, dass die Globals "on" sind, solltest Du
    alle richtig gemacht haben. Dann kann es ja höchstens noch ein Fehler in der Installation
    sein. Stichwort: Neuinstallation!?
     
  8. bondiblue

    bondiblue MacUser Mitglied

    Beiträge:
    258
    Zustimmungen:
    0
    MacUser seit:
    27.10.2001
    hallo

    wenn phpinfo() register_globals= on ausgibt, dann sind die globals on

    hm ich weiss nicht welchem buch du das entnommen hast aber folgende frage: warum gibt es variablen UND globale variablen? wie unterscheiden sie sich? bzw wie kann php die unterscheiden? meine meinung: php unterscheidet durch die schreibweise:

    normale variable= $irgendwas
    globale variable= $_GET["irgendwas"] oder $HTTP_GET_VARS["irgendwas"]

    liebe grüsse
    bondiblue
     
  9. bondiblue

    bondiblue MacUser Mitglied

    Beiträge:
    258
    Zustimmungen:
    0
    MacUser seit:
    27.10.2001
    ... und wenn sie sich unterscheiden dann aus einem bestimmten grund: php behandelt sie unterschiedlich....
     
  10. lun_IX

    lun_IX MacUser Mitglied

    Beiträge:
    687
    Zustimmungen:
    8
    MacUser seit:
    03.11.2003
    @thommi:

    wenn register_globals auf on steht, heisst das nicht, dass du Variablen aus dem query String per $variable aufrufen kannt!
    register_globals ermöglicht dir, variablen aus dem Query-String per $_GET[variable] aufzurufen, nicht mehr und nicht weniger!

    Wenn du register_globals auf "off" stellst, wird auch die erste zeile deines Skriptes (echo $_GET[test]; ) nicht mehr gehen!


    achso: "bondi recht geb"
     
Die Seite wird geladen...

Diese Seite empfehlen