AllesMeins: "Sauberes PHP" Existenz einer Variable abfragen

Hiho,

folgendes Problem. Ich habe in einem Formular die Bezeichnung name="fb[suche]" verwendet. Nun möchte ich gerne abfragen ob $_REQUEST['fb']['suche'] übermittelt wurde (und leer ist) oder nicht.
Also habe ich es einfach mit einem if($_REQUEST['fb']['suche'] == ""){ probiert. Da gibt mir aber PHP ein Notice aus:

Notice: Undefined index: fb in /htdocs/index.php on line 332

Da ich ja versuchen will so sauberes PHP wie möglich zu schreiben: Wo ist da der Fehler und wie bekomme ich es ohne Warnung hin?

Marc

  1. Hello,

    zum sauberen PHP gehört auch, dass man $_REQUEST möglichst nicht benutzt, sonder die dedizierten Methoden-Arrays $_GET, $_POST, $_COOKIE, $_SESSION, ...

    und dann gibt es zwei Funktionen, die man als Starter gerne ignoriert, weil sie Schreibarbeit bedeuten...

    isset()
    empty()

    Zweitere hat aber auch ein paar Fallstricke, z.B. wenn man eine numerisch 0 übertragen will und muss.

    Harzliche Grüße vom Berg
    esst mehr http://www.harte-harzer.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Hallo Freunde des gehobenen Forumsgenusses,

      zum sauberen PHP gehört auch, dass man $_REQUEST möglichst nicht benutzt, sonder die dedizierten Methoden-Arrays $_GET, $_POST, $_COOKIE, $_SESSION, ...

      $_REQUEST ist doch so etwas wie array_merge($_GET, $_POST, $_COOKIE), oder?
      Was ist da eigentlich verwerflich daran, das anstelle $_GET etc. zu benutzen?

      Ein Angreifer kann doch sowieso beliebige Daten auf beliebigem Wege übermitteln,
      und ich finde es z.B. immer ganz nett, wenn ich Formulardaten (z.B. bei Suchmaschinen)
      auch über GET und nicht nur über POST übertragen kann.

      Gruß
      Alexander Brock

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
      1. hi,

        $_REQUEST ist doch so etwas wie array_merge($_GET, $_POST, $_COOKIE), oder?

        so in etwa, ja - wobei die priorität bei namensgleichheit von variables_order abhängt.

        Was ist da eigentlich verwerflich daran, das anstelle $_GET etc. zu benutzen?

        in fällen, wo man wissen möchte, aus welcher quelle was kommt, bieten sich $_POST, $_GET, $_COOKIE oftmals eher an - schon rein der übersichtlichkeit halber.

        und ich finde es z.B. immer ganz nett, wenn ich Formulardaten (z.B. bei Suchmaschinen)
        auch über GET und nicht nur über POST übertragen kann.

        in so einem falle kann man auch $_REQUEST benutzen.
        $_REQUEST ist nicht generell böse - aber man sollte wissen, was es bedeutet und was man damit tut.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }