kerstel: Fehlermeldung von PHP

Hi,

ich habe vorhin mein Laptop (win2k) neu aufgezogen, und dabei die neuste PHP (4.3.4) installiert sowie den Zend Optimizer.

Wenn ich aber nun meine Script ausführe, bekomme ich bei Globalen Variablen ($_GET, $_POST) eine Fehlermeldung:

Undifined Index: VARIABLE in Line xx.

Bei normalen Variablen bekomm ich auch eine, die ich aber gerade nicht weiß :)

In der php.ini hab ich register_globals auf on und off gestellt, hat aber nix gebracht.

Hat jemand ne Idee wo die Fehler herkommen?

Gruß

Kerstel

  1. Moin!

    Undifined Index: VARIABLE in Line xx.

    Was'n das für eine Meldung? Die kommt so garantiert nicht.

    Bitte mal _vollständig_ Copy&Paste machen.

    - Sven Rautenberg

    --
    "Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
    (fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)
    1. Hi,

      Undifined Index: VARIABLE in Line xx.

      Was'n das für eine Meldung? Die kommt so garantiert nicht.

      Undifinied Index: login in c:\webs\produs\index.php on Line 20

      So steht sie da. In Linie 20 steht die Variable $_GET["login"]:

      if ($_GET["login"]==1) {

      Gruß

      Kerstel

      1. Moin!

        Was'n das für eine Meldung? Die kommt so garantiert nicht.

        Undifinied Index: login in c:\webs\produs\index.php on Line 20

        Steht davor nicht vielleicht zufällig "Notice:"? Und steht da tatsächlich "Undifined" - oder vielleicht doch "Undefined"?

        Du tippst die Meldung ab, aber nicht buchstabengetreu. Und nicht komplett.

        Aber immerhin sehe ich dein Problem.

        So steht sie da. In Linie 20 steht die Variable $_GET["login"]:

        if ($_GET["login"]==1) {

        Wenn im Array $_GET kein Index "login" definiert ist, kommt diese Notice. Das ist ein Hinweis, um Programmierfehler zu vermeiden, der sich abschalten läßt. Sollte in der php.ini dokumentiert sein.

        Aber da es schöner ist, notice-frei zu programmieren:

        if (isset($_GET['login']) && ($_GET['login']==1)) {

        Wenn die Variable nicht gesetzt ist (weil sie nicht existiert), wird gar nicht erst versucht, ihren Inhalt mit 1 zu vergleichen.

        Läßt sich möglicherweise verkürzen zu:
        if (isset($_GET['login']))
        wenn es nur darauf ankommt, dass die Variable gesetzt ist, aber nicht, ob 1 oder ein anderer Wert drin vorkommt.

        - Sven Rautenberg

        --
        "Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
        (fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)
        1. Hello,

          Läßt sich möglicherweise verkürzen zu:
          if (isset($_GET['login']))
          wenn es nur darauf ankommt, dass die Variable gesetzt ist, aber nicht, ob 1 oder ein anderer Wert drin vorkommt.

          Spannend ist, was rauskommt, wenn da jemand schreibt:

          www.domain.tld/?login=false;

          oder auch mal

          www.domain.tld/?login=0;

          Scheint mir sowieso ein Fall für 'ne Sicherheitsdiskussion zu sein.

          Grüße

          Tom

          1. Hi,

            Scheint mir sowieso ein Fall für 'ne Sicherheitsdiskussion zu sein.

            login wird nur Übergeben um die $_POST Daten zu prüfen

            Gruß

            Kerstel

            1. Hello,

              Scheint mir sowieso ein Fall für 'ne Sicherheitsdiskussion zu sein.
              login wird nur Übergeben um die $_POST Daten zu prüfen

              Versteh ich jetzt nicht. $_POSTm und $_GET sind ja verschiedene Schuhe. Das PHP trotz $_SERVER["REQUEST_METHOD"] == "POST" noch Get-Parameter zur Verfügen stellen kann, ist auch bekannt.

              Aber POST-Parameter könnten doch in sich selbst schlüssig sein. Erklär soch mal, was Du da machst.

              Wissbegierige Grüße

              Tom

              1. Hi,

                Aber POST-Parameter könnten doch in sich selbst schlüssig sein. Erklär soch mal, was Du da machst.

                Was ich mache hat eigentlich nichts mit meiner ursprünglichen Frage zu tun, aber naja.

                Es ist ein Login feld. Wenn das Formular abgeschickt wird wird $_GET["Login"]==1 übergeben, damit das Script weiß, es hat ein Login versuch stattgefunden. Erst dann werden die Übergebenen Formularfelder ($_POST) mit der Datenbank abgeglichen.

                Jaja, ich weiß man kann es auch anders, besser, einfacher oder was auch immer machen.

                Gruß

                Kerstel