Wilhelm Turtschan: Notice-Meldungen

habe d'ehre

Ich bin gerade beim Test einer neu erstellten Applikation. Wenn ich error_reporting(E_ALL) einschalte, zeigt er mir fuer (z.B) $_GET['modus'] immer die Notiz "Undefinied Index: modus".

Gibt es eine Moeglichkeit dies zu unterbinden, ausser natuerlich error_reporting(0), oder fehlt etwas Grundsaetzliches was ich nicht kenne? Normale Arrays sollen ja initialisiert werden, aber bei $_GET oder $_POST?

Die Inhalte der $_GET-Variable werden selbstverstaendlich auf gueltige Werte ueberprueft.

man liest sich
Wilhelm

  1. Hallo Wilhelm,

    $_GET etc. muss man nicht initialisieren, die sind immer da. Ob es den erwuenschten Key gibt, ist natuerlich eine andere Sache.

    Meine Standardloesung dafuer ist ein kleines Ternary-Statement
    $foo = !empty($_GET['foo']) ? $_GET['foo'] : ''; //bzw. array() oder was angemessen ist im Else-Teil

    Wenn Du unbedingt $_GET['foo'] brauchst, sollte auch funktionieren:
    $_GET['foo'] = !empty($_GET['foo']) ? $_GET['foo'] : '';

    Dieter

    1. habe d'ehre

      Meine Standardloesung dafuer ist ein kleines Ternary-Statement
      $foo = !empty($_GET['foo']) ? $_GET['foo'] : ''; //bzw. array() oder was angemessen ist im Else-Teil

      Das habe ich auch schon angedacht, allerdings muss ich dann jeden Schmonz in die Funktionen mit uebergeben, was ich eigentlich nicht will.

      $_GET['foo'] = !empty($_GET['foo']) ? $_GET['foo'] : '';

      Das gefaellt mir schon besser und macht das was ich will.

      man liest sich
      Wilhelm

      1. habe d'ehre

        $_GET['foo'] = !empty($_GET['foo']) ? $_GET['foo'] : '';

        Hmhh, jetzt kennt er in Funktionen die $_GET nicht mehr. *grmpf*
        Weiterbuddeln ist angesagt, die Doku gibt da aber auch nicht wirklich viel her.

        man liest sich
        Wilhelm

        1. Holladiewaldfee,

          $_GET['foo'] = !empty($_GET['foo']) ? $_GET['foo'] : '';

          Hmhh, jetzt kennt er in Funktionen die $_GET nicht mehr. *grmpf*

          Hm? $_GET ist autoglobal und bleibt es auch, wenn man Werte zuweist und nicht nur abfrägt.

          Folgendes Beispiel

          ---
          $_GET['bla'] = 'blubb';

          function x()
          { print_r($_GET); }

          x();
          ---

          funktioniert zumindest bei mir so wie erwartet.

          Oder habe ich Dich falsch verstanden?

          Ciao,

          Harry

          --
            Irgendwann kommt die Waldfee - oder auch nicht ... (Projektphase: Keine Ahnung)
            Bis dahin:
            Ski- und Bergtouren in den Tölzer Voralpen und im Karwendel
          1. habe d'ehre

            Hm? $_GET ist autoglobal und bleibt es auch, wenn man Werte zuweist und nicht nur abfrägt.

            Offenbar muss ich irgendwo einen Murks gemacht haben. Jetzt habe ich mal alles wieder entfernt und neu eingegeben.
            Jetzt geht es, vorerst. :-)

            Vielleicht einfach Zeit fuer Wochenende, damit man auch wieder die Baeume im Wald sieht. ;-)

            man liest sich
            Wilhelm

    2. Hello Dieter,

      Meine Standardloesung dafuer ist ein kleines Ternary-Statement
      $foo = !empty($_GET['foo']) ? $_GET['foo'] : ''; //bzw. array() oder was angemessen ist im Else-Teil

      Wenn Du unbedingt $_GET['foo'] brauchst, sollte auch funktionieren:
      $_GET['foo'] = !empty($_GET['foo']) ? $_GET['foo'] : '';

      Das Ganze hat aber einen kleinen Schönheitsfehler:
      Wenn der Wert von foo nun 0 ist, dann streikt das Statement.

      Besser ist es hier, noch if(isset($_GET['foo'])) zu fragen.

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau