Anzeige

Kontaktformular funktioniert nur teilweise

Kontaktformular funktioniert nur teilweise | PSD-Tutorials.de

Erstellt von chicco97, 02.05.2013.

  1. chicco97

    chicco97 Nicht mehr ganz neu hier

    Dabei seit:
    09.03.2012
    Beiträge:
    84
    Geschlecht:
    männlich
    Kontaktformular funktioniert nur teilweise
    Hallo Zusammen,

    hab da ein kleines Problem und wollt Euch um Rat fragen:

    Es geht um mein Kontaktformular, das eigentlich sehr gut und einfach funktioniert. ABER eben nicht beim IE und Safari MAC OS. Da kann ich das Formular ohne Einträge einfach wegschicken, also leer obwohl die Felder mit einem "required" ausgezeichnet sind. Das ganze funktioniert bei win unter Safari und Firefox hervorragend.

    Habt Ihr mir Rat ?

    Danke schon mal.

    Gruß Micha

    PHP:
    1. <?php
    2.  
    3.  
    4.  
    5. // ======= Text der Mail aus den Formularfeldern erstellen:
    6.  
    7. // Wenn Daten mit method="post" versendet wurden:
    8. if(isset($_POST)) {
    9.    // alle Formularfelder der Reihe nach durchgehen:
    10.    foreach($_POST as $name => $value) {
    11.       // Wenn der Feldwert aus mehreren Werten besteht:
    12.       // (z.B. <select multiple>)
    13.       if(is_array($value)) {
    14.           // "Feldname:" und Zeilenumbruch dem Mailtext hinzufügen
    15.           $mailText .= $name . ":\n";
    16.           // alle Werte des Feldes abarbeiten
    17.           foreach($valueArray as $entry) {
    18.              // Einrückungsleerzeichen, Wert und Zeilenumbruch
    19.              // dem Mailtext hinzufügen
    20.              $mailText .= "   " . $value . "\n";
    21.           } // ENDE: foreach
    22.       } // ENDE: if  
    23.       // Wenn der Feldwert ein einzelner Feldwert ist:
    24.       else {
    25.           // "Feldname:", Wert und Zeilenumbruch dem Mailtext hinzufügen
    26.           $mailText .= $name . ": " . $value . "\n";
    27.       } // ENDE: else
    28.    } // ENDE: foreach
    29. } // if
    30.  
    31. // ======= Korrekturen vor dem Mailversand
    32.  
    33. // Wenn PHP "Magic Quotes" vor Apostrophzeichen einfügt:
    34.      // eventuell eingefügte Backslashes entfernen
    35.      $mailtext = stripslashes($mailtext);
    36.  }
    37.  
    38.  
    39. // ======= Mailversand
    40.  
    41. // Mail versenden und Versanderfolg merken
    42. $mailSent = @mail($mailTo, $mailSubject, $mailText, "From: ".$mailFrom);
    43.  
    44. // ======= Return-Seite an den Browser senden
    45.  
    46. // Wenn der Mailversand erfolgreich war:
    47. if($mailSent == TRUE) {
    48.    // Seite "Formular verarbeitet" senden:
    49.    header("Location: " . $returnPage);
    50. }
    51. // Wenn die Mail nicht versendet werden konnte:
    52. else {
    53.    // Seite "Fehler aufgetreten" senden:
    54.    header("Location: " . $returnErrorPage);
    55. }
    56.  
    57. // ======= Ende
    58.  
    59. exit();
    60.  
    61. ?>
    62.  
    63.  
    HTML:
    1. <h1>Kontaktformular</h1>
    2. <form method="post" action="/form-mailer.php">
    3.     <div class="textfeld">
    4.       <label for="name">Ihr Name</label>
    5.       <input type="text" name="name" id="name" autofocus required />
    6.     </div>
    7.    <div class="textfeld">
    8.       <label for="mail">Ihre E-Mail</label>
    9.       <input type="email" name="mail" id="mail"  required="required"/>
    10.    </div>
    11.    <div class="textfeld">
    12.       <label for="betreff">Betreff</label>
    13.       <input type="tel" name="betreff" id="betreff" />
    14.    </div>
    15.    <div class="textfeld">
    16.       <label for="nachricht">Ihre Nachricht</label>
    17.       <textarea name="nachricht" id="nachricht" rows="10" cols="20"></textarea>
    18.    </div>
    19.    <div class="submitbutton">
    20.       <input type="submit" value="Absenden" />
    21.    </div>
    22.   </fieldset>
    23. </form>
     
    #1      
  2. Duddle

    Duddle Posting-Frequenz: 14µHz

    Dabei seit:
    03.02.2006
    Beiträge:
    3.864
    Geschlecht:
    männlich
    Ort:
    Dresden
    Kontaktformular funktioniert nur teilweise
    AW: Kontaktformular funktioniert nur teilweise

    Das hat nichts mit PHP zu tun, weil dieses serverseitig (unabhängig vom Nutzer und seinem Browser) abläuft.

    Wahrscheinlich probierst du das Formular in einem Browser, der das required-Attribut nicht unterstützt, siehe http://www.w3schools.com/tags/att_input_required.asp
    Wenn du Pflichtfelder benötigst, musst du noch serverseitig prüfen ob die entsprechenden Felder ausgefüllt sind. Hier kommt dann wieder PHP in's Spiel. Ich weiß nicht, wie gut dein PHP-Wissen ist, aber du wirst mit der Suche nach "Pflichtfelder PHP" einige relevante Beiträge und Scripte im Netz finden.


    Duddle
     
    #2      
  3. chicco97

    chicco97 Nicht mehr ganz neu hier

    Dabei seit:
    09.03.2012
    Beiträge:
    84
    Geschlecht:
    männlich
    Kontaktformular funktioniert nur teilweise
    AW: Kontaktformular funktioniert nur teilweise

    Dann sag ich mal vielen Dank. Ich dachte das liegt am Code. Wieder was gelernt !!
     
    #3      
  4. StS882

    StS882 Noch nicht viel geschrieben

    Dabei seit:
    01.04.2012
    Beiträge:
    15
    Geschlecht:
    männlich
    Ort:
    Bottrop
    Kameratyp:
    Canon EOS 650D
    Kontaktformular funktioniert nur teilweise
    AW: Kontaktformular funktioniert nur teilweise

    Alternativ kann man die Felder auch per Javascript prüfen, dann muss man die Daten nicht erst hin und her schicken sondern kann das Clientseitig testen.

    Gruß,
    Stephan
     
    #4      
  5. chicco97

    chicco97 Nicht mehr ganz neu hier

    Dabei seit:
    09.03.2012
    Beiträge:
    84
    Geschlecht:
    männlich
    Kontaktformular funktioniert nur teilweise
    AW: Kontaktformular funktioniert nur teilweise

    Das hatte ich auch schon überlegt. Aber was ist wenn der User das js deaktiviert hat ?
     
    #5      
  6. Dagobert68

    Dagobert68 Nicht mehr ganz neu hier

    Dabei seit:
    01.12.2008
    Beiträge:
    181
    Geschlecht:
    weiblich
    Software:
    Win10, PS CS6, Affinity Photo, LR 6, DxO Photo Lab, ACDSee Ultimate 2018, NIK, Photomatix, PTGui Pro
    Kameratyp:
    Canon EOS 5D Mark IV und 7D Mark II
    Kontaktformular funktioniert nur teilweise
    AW: Kontaktformular funktioniert nur teilweise

    Moin :)

    Genau. Deshalb sollte man möglichst immer auch serverseitig prüfen. Die JS-Prüfung sollte eigentlich nur dazu dienen, für den Benutzer möglichst hohen Bedienkomfort zu schaffen, denke ich. Aber anschließend immer noch mal serverseitig mit PHP prüfen. Das gilt generell für alle per Benutzer-Interaktion empfangenen Daten.

    Grüßli,
    Dagobert :)
     
    #6      
  7. Myhar

    Myhar Hat es drauf

    Dabei seit:
    01.11.2007
    Beiträge:
    2.079
    Geschlecht:
    männlich
    Ort:
    Ö
    Kontaktformular funktioniert nur teilweise
    AW: Kontaktformular funktioniert nur teilweise

    Man muss immer serverseitig überprüfen!
    Das required Attribut kann man zB mit Firebug innerhalb von Sekunden von einem input Feld entfernen, dann kann man es auch ohne Probleme abschicken. Javascript Validierungen kann man ebenso einfach umgehen, dafür muss nicht einmal JS deaktiviert sein. Man ändert dazu einfach das JS lokal um (im Chrome) oder schickt das Formular einfach in der Konsole selber ab.
     
    #7      
  8. StS882

    StS882 Noch nicht viel geschrieben

    Dabei seit:
    01.04.2012
    Beiträge:
    15
    Geschlecht:
    männlich
    Ort:
    Bottrop
    Kameratyp:
    Canon EOS 650D
    Kontaktformular funktioniert nur teilweise
    AW: Kontaktformular funktioniert nur teilweise

    Das die Daten ohnehin auf dem Server auf Validität geprüft und escaped (... etc.) werden müssen steht denke ich ausser Frage.

    Die "Prüfung" per JS soll wenn dann wirklich nur die erste "Hürde" sein bevor der Server die Daten bearbeiten muss.
    Grundsätzlich ist es heutzutage natürlich kein Problem mehr jede clientseitige Prüfung zu umgehen bzw. zu verfälschen, aber für "Otto Normal" sollte es dennoch reichen ;)
     
    #8      
x
×
×