Ankündigung

Einklappen
Keine Ankündigung bisher.

Array-Key in foreach-Schleife

Einklappen

Neue Werbung 2019

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

  • Array-Key in foreach-Schleife

    Hallo

    Um zu überprüfen, ob alle Felder eines Formulars ausgefüllt wurden, verwende ich normalerweise:
    Code:
    foreach($_POST as $eingabe){
     if(empty($eingabe)){
      die("nicht alle felder ausgefüllt");
     }
    }
    Nun habe ich aber einige optionale Felder im Formular. Wie kann ich in der foreach-Schleife Keys des Arrays $_POST ausfindig machen und so deren Überprüfung umgehen?



    Vielen Dank

  • #2
    Mit dieser Syntax:
    PHP-Code:
    <?php
    foreach ($_POST as $sKey => $sValue)
    ?>
    und der entsprechenden if-Bedingung. Allerdings solltest du deine Überprüfung mal modernisieren.

    Kommentar


    • #3
      Hallo guenterfrosch,

      zum einen muss ich den Rat von Zergling bekräftigen, zum anderen solltest du dir Gedanken machen, ob das wirklich immer richtig ist. Nehmen wir mal an du hast noch einige Hidden-Felder im Formular, die einfach leer sein müssen, weil das Programm es so möchte, dann kann dein User ausfüllen, was er will, es wird nicht klappen das Formular abzuschicken. Hier solltest du vorher konfigurieren, oder angeben, welche Post-Variablen du prüfen möchtest. Des Weiteren solltest du evtl. noch Syntax-Prüfung einführen. Bei einem Feld E-Mail soll der Benutzer möglichst eine syntaktisch richtige E-Mail einfügen.
      Auch das "die()" ist sehr unschön, weil der Benutzer sonst komplett aus der Seite geschmissen wird und kein Design bzw. Formular mehr angezeigt wird. Evtl. arbeitest du mit roten Umrandungen wir in http://www.zierpflanzenberatung.de/Seite/52.

      Kommentar


      • #4
        Zitat von dr.e.
        ... zum anderen solltest du dir Gedanken machen, ob das wirklich immer richtig ist. Nehmen wir mal an du hast noch einige Hidden-Felder im Formular, die einfach leer sein müssen, weil das Programm es so möchte, dann kann dein User ausfüllen, was er will, es wird nicht klappen das Formular abzuschicken. Hier solltest du vorher konfigurieren, oder angeben, welche Post-Variablen du prüfen möchtest.
        Ich versteh net ganz, was Du damit sagen willst.
        Gerade deshalb will der OP doch die Namen der Felder herauskriegen. Nur dann kann er ja einige Felder gezielt auslassen.

        Und notfalls kann man dem Hidden-Feld auch einen Wert verpassen.

        Kommentar


        • #5
          da gibt es weit mehr probleme. z.b., dass nicht ausgewählte checkboxes nicht per post übertragen werden, aber trotzdem durchaus gültige angaben darstellen. oder die datentypen nicht stimmen. ich muß ja für die post anfrage nicht dein vorgegebenes form verwenden.

          Kommentar


          • #6
            Ne, musst du nich, aber das Format sollte es schon haben Wenn ich mich nicht an ein Interface halte, muss ich mich nicht wundern, dass es nicht funktioniert.

            Kommentar


            • #7
              Hallo Der_Gerhard,

              Ich versteh net ganz, was Du damit sagen willst.
              Gerade deshalb will der OP doch die Namen der Felder herauskriegen. Nur dann kann er ja einige Felder gezielt auslassen.
              Was ich damit sagen will. ist dass man das prüfen nur auf die im Form enthaltenen Felder beschränken sollte und zudem diese nach Syntax (Text-Feld: mind. 3 Zeichen; E-Mail: syntaktisch gültige E-Mail) prüfen sollte. Sowas wie (Pseudocode)

              PHP-Code:
              <?php
              $aFormFields 
              = array('Name','EMail');

              foreach(
              $_POST as $sKey => $sValue){

                 if(
              in_array($sKey,$aFormFields)){
                 
                    [...]

                 }

              }
              ?>

              Kommentar


              • #8
                Das hat aber nun rein gar nix mit dem von mir zitierten Text zu tun.
                Über den Rest mit der Email hab ich ja nix gesagt.

                Kommentar


                • #9
                  Was meinst du dann? Ich bin verwirrt?

                  Kommentar


                  • #10
                    Zitat von KingCrunch
                    Ne, musst du nich, aber das Format sollte es schon haben Wenn ich mich nicht an ein Interface halte, muss ich mich nicht wundern, dass es nicht funktioniert.
                    entscheidend ist eher die sicherheitsrelevanz. wenn ich davon ausgehe, dass ein parameter nur die werte annehmen kann, die ich in einem select oder radio options element angebe wirds schnell hakelig.

                    Kommentar


                    • #11
                      Klar, aber das kann sogar schon passieren, wenn jemand mein Formular verwendet Die Prüfung auf Gültigkeit hab ich jetzt als Selbstverständlich genommen ^^ Dazu gehört bei Checkboxen eben auch bei Checkboxen die Prüfung auf Existenz.

                      Wir weichen schon wieder vom Thema ab, oda? ^^

                      Kommentar

                      Lädt...
                      X