Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehlermeldung bei Kontaktformular

Einklappen

Neue Werbung 2019

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

  • Fehlermeldung bei Kontaktformular

    Hallo zusammen,

    vermutlich die 1000. Frage zu Kontaktformularen, aber ich finde keine Hilfe!

    Für eine Wordpress-Seite nutze ich ein Kontaktformular, das ich im Netz gefunden habe.
    Das ist der Code:

    Code:
    • <?php
    • /*
    • Template Name: Kontakt
    • */
    • ?>
    • <?php /* other template code goes here... */?>
    • <?php
    • /* response strings */
    • $missing_fields ='Bitte füllen Sie alle Felder aus.';
    • $email_invalid ='Ihre E-Mail-Adresse ist ungültig.';
    • $trapped ='Bitte diese Seite nicht per Script aufrufen.';
    • $error ='Die Nachricht konnte nicht gesendet werden.';
    • $success ='Danke! Die Nachricht wurde gesendet.';
    • /* process post vars, leave honeypot raw */
    • $submitted = sanitize_text_field( $_POST['scf_submitted']);
    • $name = sanitize_text_field( $_POST['scf_name']);
    • $email = sanitize_text_field( $_POST['scf_email']);
    • $message = sanitize_text_field( $_POST['scf_message']);
    • $honeypot = $_POST['scf_message2'];
    • /* wp_mail vars */
    • $mailto = get_option('admin_email');
    • $subject ='Nachricht von '. get_bloginfo('name');
    • $headers ='From: '. $email ."\r\n".'Reply-To: '. $email ."\r\n";
    • if( $submitted ){
    • if( $honeypot !=""){
    • scf_response("alert-danger", $trapped);
    • }else{
    • if(!$name ||!$email ||!$message ){
    • $alert[]= $missing_fields;
    • }
    • if(!is_email( $email )&& $email ){
    • $alert[]= $email_invalid;
    • }
    • if( empty( $alert )){
    • if( wp_mail( $mailto, $subject, strip_tags( $message ), $headers )){
    • $alert[]= $success;
    • scf_response("alert-success", $alert);
    • unset( $submitted, $name, $email, $message, $honeypot );
    • }else{
    • $alert[]= $error;
    • scf_response("alert-danger", $alert);
    • }
    • }else{
    • scf_response("alert-warning", $alert);
    • }
    • }
    • }
    • /* output alert html */
    • function scf_response( $class, $alertArr ){
    • $alertStr = implode('<br>', $alertArr );
    • echo '<div class="alert '. $class .'">'. $alertStr .'</div>';
    • }
    • ?>
    • <form role="form" action="<?php the_permalink();?>" method="post">
    • <divclass="form-group">
    • <labelfor="scf_name">Name</label>
    • <input
    • type="text"
    • id="scf_name" name="scf_name"
    • value="<?php echo $name;?>"
    • class="form-control"
    • placeholder="Ihr Name">
    • </div>
    • <divclass="form-group">
    • <labelfor="scf_email">E-Mail</label>
    • <input
    • type="text"
    • id="scf_email" name="scf_email"
    • value="<?php echo $email;?>"
    • class="form-control"
    • placeholder="Ihre E-Mail-Adresse">
    • </div>
    • <divclass="form-group">
    • <labelfor="scf_message">Nachricht</label>
    • <textarea
    • rows="4"
    • id="scf_message"name="scf_message"
    • class="form-control"
    • placeholder="Ihre Nachricht"><?php echo $message;?></textarea>
    • </div>
    • <divclass="form-group"style="display:none;">
    • <labelfor="scf_message2">Nachricht2</label>
    • <inputtype="text"name="scf_message2"name="scf_message2">
    • </div>
    • <inputtype="hidden"name="scf_submitted"value="1">
    • <buttontype="submit"class="btn btn-primary">Nachricht senden</button>
    • </form>
    • <?php /* other template code goes here... */?>
    Nun bekomme ich Fehlermeldungen:

    Notice: Undefined index: scf_submitted in URL on line 11

    Notice: Undefined index: scf_name in URL on line 12

    Notice: Undefined index: scf_email in URL on line 13

    Notice: Undefined index: scf_message in URL on line 14

    Notice: Undefined index: scf_message2 in URL on line 15


    Ich habe versucht die Abfragen umzuschreiben und !isset zu nutzen. Aber es will mir einfach nicht gelingen.

    Kann mir hier wer helfen?

    Ich danke euch!!


  • #2
    mach mal aus:

    PHP-Code:
    $namesanitize_text_field$_POST['scf_name']); 
    das hier:

    PHP-Code:
    $name = isset($_POST['scf_name']) ? sanitize_text_field($_POST['scf_name']) : 'Keine Angabe'
    Damit sollte der Fehler aus der Zeile 12 verschwinden. Das müsstest du mit den anderen ebenfalls machen.

    Schau mal mit:

    PHP-Code:
    var_dump($_POST); 
    wie dein POST nach dem Absenden des Formulars aussieht und ob die richtigen Keys befüllt sind bzw warum nicht.
    hardcore will never die

    Kommentar


    • #3
      PHP-Code:
      $submitted sanitize_text_field( isset($_POST['scf_submitted']) ? $_POST['scf_submitted'] : '' );
      // Info zur Syntax, siehe: http://php-de.github.io/jumpto/if/#bedingungsoperator


      // oder ab PHP 7
      // siehe: http://php.net/manual/de/migration70.new-features.php#migration70.new-features.null-coalesce-op

       
      $submitted sanitize_text_field( isset($_POST['scf_submitted']) ?? '' ); 
      Bitte beachten: Sowas sollte der Ersteller fixen. https://www.php.de/articles/regeln-u...twareprodukten
      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


      • #4
        Wow, das ging ja mega schnell!

        Hab die Zeilen abgeändert in $submitted = sanitize_text_field( isset($_POST['scf_submitted']) ? $_POST['scf_submitted'] : '' );
        usw. Die Meldungen sind weg!!! Juhu!

        Wenn ich jetzt auf Senden klicke, dann kommt, dass die Nachricht gesendet wurde und gleichzeitig wird jedes Feld befüllt mit einer Fehlermeldung. Huch!
        <br /><b>Notice</b>: Undefined variable: name in <b>URL</b> on line <b>72</b><br />

        Im Code ist das dieser Part:

        HTML-Code:
        <input 
                              type="text" 
                              id="scf_name" name="scf_name" 
                              value="<?php echo $name; ?>" 
                              class="form-control"
                              placeholder="Ihr Name">
        ehc_master, ich vermute, dass du das meintest?
        Leider check ich das grad gar nicht.

        Ich schreibe dem Ersteller mal.
        Da das aus 2013 ist, hatte ich nicht die Hoffnung. Aber ja, ihr habt recht!

        Trotzdem vielen Dank, dass ihr mir hier helft!

        Kommentar


        • #5

          <input type="text" id="scf_name" name="scf_name" value="<?= !empty($name) ? $name : '' ?>" class="form-control" placeholder="Ihr Name">
          hardcore will never die

          Kommentar


          • #6
            Danke! Genial!

            Kommentar

            Lädt...
            X