"required" Felder im Formular

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • "required" Felder im Formular

    Hallo zusammen,
    ich habe ein Formular erstellt, das auch wunderbar funktioniert. Nur mit den "required"-Feldern klappt es leider nicht. Das wird einfach ignoriert, also auch wenn nichts eingegeben wird, kann man das Formular absenden. Was habe ich falsch gemacht? Ich verstehe es nicht. Die values "Name,EMAIL,Telefonnummer" entsprechen genau dem, was weiter unten hinter name steht.

    Quellcode

    1. <form action="formmail.php" method="post">
    2. <input type="hidden" name="subject" value="Kontaktformular">
    3. <input type="hidden" name="access" value="irregeheim">
    4. <input type="hidden" name="required" value="Name,EMAIL,Telefonnummer">
    5. <input type="HIDDEN" name="missing" value="/form.missing.html">
    6. <table border="0"
    7. cellpadding="2" cellspacing="4" width="660" height="405">
    8. <tr>
    9. <td height="33" width="111">
    10. <p ALIGN="LEFT"><font size="3" face="Arial">Name*</font></p>
    11. </td>
    12. <td height="33" width="519"><font color="#000000" face="Arial"><input
    13. type="text" size="60"
    14. name="Name"></font></td>
    15. </tr>
    16. <tr>
    17. <td height="25" width="111">
    18. <p ALIGN="LEFT"><font size="3" face="Arial">Anschrift</font></p>
    19. </td>
    20. <td height="25" width="519"><font color="#000000" face="Arial"><input
    21. type="text" size="60" name="Anschrift"></font></td>
    22. </tr>
    23. <tr>
    24. <td height="25" width="111">
    25. <p ALIGN="LEFT"><font size="3" face="Arial">E-Mail*</font></p>
    26. </td>
    27. <td height="25" width="519"><font color="#000000" face="Arial"><input
    28. type="text" size="60" name="EMAIL"></font></td>
    29. </tr>
    30. <tr>
    31. <td height="25" width="111">
    32. <p ALIGN="LEFT"><font size="3" face="Arial">Telefonnummer*</font></p>
    33. </td>
    34. <td height="25" width="519"><font color="#000000" face="Arial"><input
    35. type="text" size="60" name="Telefonnummer"></font></td>
    36. </tr>
    Alles anzeigen

    usw. usw. ...
  • 1. Das hier ist glaube ich das Falsche Forum (HTML Forum)?
    2. Geht sowas überhaupt nativ mit HTML, vorallem die Informationen via. "hidden" Felder zu definieren?
    3. Du benötigst nach meinem Wissen ein Javascript welches das Formular kontrolliert und gegebenfalls das absenden verhindert (<form onsubmit="...">;)

    Hier ein kleiner Link zu einem solchen kontroll-Script:
    java-scripts.net/javascripts/FormCheck.phtml
  • Das php habe ich auch dazu, als Extra-Datei. Sieht so aus:

    <?php
    $recipient = "ich@xyz.de";
    $fmtResponse= implode("", file("response.htt"));
    $fmtMail= implode("", file("mail.htt"));
    foreach($_POST as $key=> $val) {
    $fmtResponse= str_replace("<$key>", $val, $fmtResponse);
    $fmtMail= str_replace("<$key>", $val, $fmtMail);
    }
    if ($_POST["access"] == "irregeheim") {
    mail($recipient, $_POST["subject"], $fmtMail);
    }
    echo $fmtResponse;
    ?>

    Wie gesagt: Das Formular funktioniert ja einwandfrei, nur mit required klappt dat nicht! :(
  • Quellcode

    1. <?php
    2. // Folgenden Code an den Anfang des PHP-Scripts stellen!
    3. // Wichtiger Hinweis: Es wird nur geprüft, ob die Felder IRGENDETWAS
    4. // enthalten, nicht WAS sie enthalten!
    5. // Gehe alle Felder durch, die im hidden-Feld "required" in einer kommaseparierten Liste angegeben wurden
    6. foreach(explode(","$_POST["required"]) as $element){
    7. // Prüfe ob das Feld "gefüllt" ist (d.h. nicht leer)
    8. if($_POST[$element] == ""){
    9. // Sollte das Feld leer sein, brich die Ausführung des Scripts ab (oder mache irgendwas anderes...)
    10. die("Bitte füllen Sie alle benötigten Felder aus.");
    11. }
    12. }
    13. // nun den Rest machen, die Pflichtfelder sind ausgefüllt worden...
    14. ?>
    Alles anzeigen


    Noch ein Hinweis: Ein als Klarttext im Formular angegebenes Passwort zu überprüfen ist sinnfrei.
  • Ich will ja nicht "kluchscheißerig" sein, aber diese Methode ist zwar bequem, doch nicht sicher.

    Wenn nun jemand ein wenig manipuliert kann er einfach die Werte in den Input-Hidden Feldern so anpassen wie diese für ihn Sahnig sind.

    Vorallem das hidden-Feld "missing" finde ich fraglich, hier scheint der Pfad einer Datei definiert zu sein, welche geladen werden soll sobald ein Fehler auftritt?

    Diese Daten sollten alle auf Seiten von PHP definiert werden z.B.:

    Quellcode

    1. $_CONF = Array(
    2. 'missing' => './file.html',
    3. 'required' => Array(
    4. 'field1', 'field2'
    5. )
    6. /* ... */
    7. );
    8. // SUBMIT AUSWERTEN HIER:
    9. $sendmail = true;
    10. foreach ($_CONF['required'] as $name) { // Alle benoetigten Felder durchgehen
    11. if (!@$_POST[$name])) { // Exisitert das Feld/ Ist ein Wert gesetzt?
    12. echo file_get_contents($_CONF['missing']); // Wenn nicht wird der inhalt von der Datei './file.html' ausgegeben wo Fehler drinne stehen?.
    13. $sendmail = false;
    14. }
    15. }
    16. // Und nun email senden, wenn es keinen Fehler gab
    17. if ($sendmail) {
    18. mail( /*..... */ );
    19. }
    20. // SEIN FORMULAR HIER AUSGEBEN
    21. echo "<form ........";
    Alles anzeigen


    Ich hoffe das funktioniert, habs nicht getestet, es soll aber auch mehr ne Idee sein.
    Achja: Auch diese Lösung ist nicht 100%ig sicher, da die Werte nicht alle validiert sind

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von KeksNico ()