Ankündigung

Einklappen
Keine Ankündigung bisher.

Anmeldeformular auf Vollständigkeit prüfen

Einklappen

Neue Werbung 2019

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

  • Anmeldeformular auf Vollständigkeit prüfen

    Hallo liebe Community.

    Ich möchte mein Anmeldeformular bevor ich es versende auf seine Vollständigkeit überprüfen. Bis jetzt können z.B. falsche Daten in die Textfelder eingetragen werden. Es wird zwar auch die Fehlermeldung angezeigt, das dieses Feld nicht richtig ausgefüllt wurde, aber die Daten werden trotzdem in einer csv. Datei gespeichert ..

    Kann mir da einer weiterhelfen

    Meine Daten werden in einem Array gespeichert
    PHP-Code:
    $data = array();

    $data['name'] = trim(htmlentities($_POST['name']));
    $data['organisation'] = trim(htmlentities($_POST['organisation']));
    usw

  • #2
    Puh.. Ja was soll man da sagen.. dann mach es richtig Zu wenig (zu unrelevanter) Code.

    Hier:

    Affenformular: http://php-de.github.io/jumpto/affenformular/

    Debugging: http://php-de.github.io/jumpto/leitfaden/

    LG
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Hilft mir so jetzt nicht direkt weiter

      Es soll auch vielleicht nicht eher auf die Vollständigkeit geprüft werden, sondern das die required-Felder RICHTIG ausgefüllt wurden.
      Das ist jetzt der letzte Schritt der mir fehlt

      PHP-Code:
      if(=== preg_match("/^[a-zA-Z ]+$/"$data['name'])) {
          
      $errors['name'] = "Bitte geben Sie Ihren Namen ein!";
      }

      if(
      === preg_match("/^[öäüA-Z0-9._%-]+@[öäüA-Z0-9.-]+\.[A-Z]{2,4}$/siU"$data['email'])) {
          
      $errors['email'] = "Bitte geben Sie eine gültige eMail Adresse an!";

      So sehen meine Validierungen aus

      Kommentar


      • #4
        Es soll auch vielleicht nicht eher auf die Vollständigkeit geprüft werden, sondern das die required-Felder RICHTIG ausgefüllt wurden.
        Das ist jetzt der letzte Schritt der mir fehlt
        Du willst also validieren. Zeig mal mehr von deinem Code, ob man das mit preg_replace lösen kann, oder doch einfach & schnell mit http://php.net/manual/en/function.filter-input.php
        while (!asleep()) sheep++;

        Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

        Kommentar


        • #5
          PHP-Code:
          if(=== preg_match("/^[a-zA-Z ]+$/"$data['name'])) {
              
          $errors['name'] = "Bitte geben Sie Ihren Namen ein!";
          }[/ 
          Und wenn ich nun Jürgen oder Hans-Peter Müller heisse
          The string "()()" is not palindrom but the String "())(" is.

          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            Alsooo, ich hab die ganzen Formulardaten in einem Array
            PHP-Code:
            $data = array();
            $errors = array();
            $data['name'] = trim(htmlentities($_POST['name']));
            $data['strasse'] = trim(htmlentities($_POST['strasse'])); 
            Hier validiere ich die Felder
            PHP-Code:
            if(=== preg_match("/^[a-zA-Z ]+$/"$data['name'])) {
                
            $errors['name'] = "Bitte geben Sie Ihren Namen ein!";
            }

            //validate straße
            if(=== preg_match("/^[a-zA-Z ]+$/"$data['strasse'])) {
                
            $errors['strasse'] = "Bitte geben Sie Ihre Straße ein!";

            HTML-Part

            Name:* <input type="text" size="40" name="name" placeholder="Name" style="background-color: #F7F77B;" onkeypress="return buchstaben(event)" required >
            <font font color="red" >
            <?php echo @$errors['name']; ?>
            </font>

            Strasse:* <input type="text" size="40" name="strasse" placeholder="Strasse" style="background-color: #F7F77B;" onkeypress="return buchstaben(event)" required> Hausnr. :<input type="text" size="3" name="hausnr" onkeypress="return zahlen(event)">
            <font font color="red" >
            <?php echo @$errors['strasse']; ?>
            </font>

            <input type="submit" value="Absenden" name="done"> <input type="reset" value="Reseten">

            Und wenn ich nun Jürgen oder Hans-Peter Müller heisse
            Dann heißt er zum jetzigen Zeitpunkt eben Juergen

            Kommentar


            • #7
              Wenn du vor der Prüfung schon htmlentities() anwendest, dann kann das zu Fehlern in der Prüfung führen die du eigentich gar nicht willst -> also raus damit. htmlentities() erst verwenden wenn es ums "ans HTML rausschreiben" der Daten geht.
              The string "()()" is not palindrom but the String "())(" is.

              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
              PHP.de Wissenssammlung | Kein Support per PN

              Kommentar


              • #8
                Geändert weil irrelevant. Beitrag kann in Ablage rund.

                Kommentar


                • #9
                  Zitat von hausl Beitrag anzeigen
                  Wenn du vor der Prüfung schon htmlentities() anwendest, dann kann das zu Fehlern in der Prüfung führen die du eigentich gar nicht willst -> also raus damit. htmlentities() erst verwenden wenn es ums "ans HTML rausschreiben" der Daten geht.
                  Wieso wenn ich fragen darf Mehr wissen schadet nicht

                  Kommentar


                  • #10
                    Weil die Funktion die eingegebenen Daten verändert: http://php.net/manual/de/function.htmlentities.php

                    Sicherheit besteht nicht darin Daten in deren Ursprung zu verändern sondern so für den jeweiligen Kontextwechsel zu escapen, das dadruch kein Schaden entstehen kann.

                    Was noch dazu kommt, du schreibst dann die veränderten Daten zB in eine Datenbank und/oder verschickst diese per Mail und dann bei der Ausgabe wird ein korrektes htmlentites() gemacht und dadurch die Entitäten quasi doppelt escpaed etc.. etc..

                    http://php-de.github.io/jumpto/kontextwechsel/

                    LG
                    The string "()()" is not palindrom but the String "())(" is.

                    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                    PHP.de Wissenssammlung | Kein Support per PN

                    Kommentar

                    Lädt...
                    X