• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Kontaktformular wird nicht zurückgesetzt, Name und E-Mail nicht weitergeleitet

silverline

Neues Mitglied
Hallo zusammen,

ich habe ein kleines Problem auf meiner Website. Ich habe ein Kontaktformular integriert, das an sich funktioniert. Allerdings werden die Felder nach dem Absenden der Nachricht nicht zurückgesetzt und ich weiß einfach nicht warum. Weiterhin erhalte ich die Nachrichten per Mail – allerdings ohne Informationen aus den Feldern "Name, Betreff, E-Mail". Ich erhalte lediglich das, was im Screenshot zu sehen ist, von "web1122@…". Hierzu sei gesagt, dass diese aktuell an meine gmx-Adresse weitergeleitet werden, da ich noch keine servereigene Adresse besitze.

Woran können meine beiden Probleme liegen?

Mein Versuch für die Leerung des Formulars schlug leider fehl. Ich wollte die Zeile
HTML:
<form method="post" action="sendemail.php" id="contactform">
mit folgender ersetzen, leider erfolglos:
HTML:
<form method="post" action="sendemail.php" id="contactform" onsubmit="this.reset();">

Vielen Dank für jede Hilfe und Grüße!


Hier der HTML-Part:

HTML:
    <div class="seven columns bigpadding" data-role="form">
        <h3 class="extrabold blacktext midbottommargin">Ich freue mich über Ihre Nachricht.</h3>
        <p class="meta">
            Bitte füllen Sie die nachfolgenden Felder aus. <br> Ich werde mich schnellstmöglich bei Ihnen melden.
        </p>
        <form method="post" action="sendemail.php" id="contactform">
            <div class="row">
                <dl class="field eight columns">
                    <dd><label for="name">Name*</label></dd>
                    <dt class="text"><input type="text" name="name" id="name"/>
                    </dt>
                    <dd class="msg">Da lief was schief :-(.</dd>
                </dl>
            </div>
            <div class="row">
                <dl class="field eight columns">
                    <dd><label for="email">E-mail*</label></dd>
                    <dt class="text"><input type="text" name="email" id="email"/>
                    </dt>
                    <dd class="msg">Da lief was schief :-(</dd>
                </dl>
            </div>
            <div class="row">
                <dl class="field eight columns">
                    <dd><label for="subject">Betreff</label></dd>
                    <dt class="text"><input type="text" name="subject" id="subject"/>
                    </dt>
                    <dd class="msg">Da lief was schief :-(</dd>
                </dl>
            </div>
            <dl class="field row">
                <dd><label for="message">Ihre Nachricht*</label></dd>
                <dt class="textarea">
                <textarea name="message" id="message"></textarea></dt>
                <dd class="error msg">Da lief was schief :-(</dd>
            </dl>
            <div class="row">
                <input class="submit three columns" type="submit" value="Abschicken" id="submit"/>
            </div>
        </form>
        <!-- END FORM -->


Und hier der PHP-Part:

PHP:
<?php

ini_set ( 'display_errors', true );

define("CONTACT_EMAIL", '[email protected]');

function ValidateEmail($email)
    {
    $regex = '/([a-z0-9_.-]+)'. # name

    '@'. # at

    '([a-z0-9.-]+){2,255}'. # domain & possibly subdomains

    '.'. # period

    '([a-z]+){2,10}/i'; # domain extension

    if($email == '') {
            return false;
        }
        else {
            $eregi = preg_replace($regex, '', $email);
    }

    return empty($eregi) ? true : false;
} // end function ValidateEmail



error_reporting (E_ALL ^ E_NOTICE);

$post = isset( $_POST['name'] ); 

if($post) {
    //include 'functions.php';

    $name = stripslashes($_POST['name']);
    $email = trim($_POST['email']);
    $subject = stripslashes($_POST['subject']);
    $message = stripslashes($_POST['message']);

    $error = '';

    if(!$name) {
        if (!$error) $error .= '<p><ul style="list-style:none;">';
        $error .= '<li>Bitte geben Sie Ihren Namen ein.</li>';
    }
    if(!$email) {
        if (!$error) $error .= '<p><ul>';
        $error .= '<li>Bitte geben Sie eine gültige E-Mail Adresse ein.</li>';
    }

    if($email && !ValidateEmail($email)) {
        if (!$error) $error .= '<p><ul>';   
        $error .= '<li>Bitte geben Sie eine gültige E-Mail Adresse ein.</li>';
    }

    if(!$message) {
        if (!$error) $error .= '<p><ul>';   
        $error .= "<li>Bitte geben Sie eine Nachricht ein.</li>";
    }


        if(!$error) {
        $mail = mail(CONTACT_EMAIL, $subject, $message,"X-Mailer: PHP/" . phpversion());


        if($mail) {
            echo '<h6>Vielen Dank für Ihre Nachricht. Ich werde mich<br>so schnell wie möglich bei Ihnen melden.</h6>';
        } else {
            echo '<div class="notification_error">Da lief was schief! :-(</div>';
        }

    }
    else
    {
        $error .= '</ul></p>';
        echo '<div class="notification_error">'.$error.'</div>';
    }
}
?>
 

Anhänge

  • Bildschirmfoto 2015-02-25 um 21.41.09.png
    Bildschirmfoto 2015-02-25 um 21.41.09.png
    19,5 KB · Aufrufe: 7
Code:
$message=stripslashes($_POST['message']);
...
$mail = mail(CONTACT_EMAIL, $subject, $message,"X-Mailer: PHP/" . phpversion());
Punkt 1: Wie sollten die Werte der Felder auch in der eMail landen, wenn du nur den Inhalt der Textarea als Inhalt der Nachricht übermittelst?

Punkt 2: Nutze statt mail() lieber eine anständige Mailer-Klasse wie phpMailer oder Swiftmailer!
 
Danke für die schnelle Antwort! Ich bin leider Anfänger was PHP betrifft. Das Formular entstammt grundlegend einem Template, an dem ich einige Änderungen vornahm. Wie kann ich denn eine andere Mailer-Klasse integrieren? Habe mich bissl in phpMailer eingelesen und die Skripte "class.phpmailer.php" und "class.smtp.php" einzubinden. Was muss ich dann allerdings an meinem Code ändern, um die Klasse zu nutzen? Blicke das leider nicht ganz :confused: Mit Integration der anderen Werte hat die Übermittelung der Daten auch via mail() geklappt:)

Und noch zu meiner zweiten Frage: wie kann ich das Formular nach Absenden der Nachricht leeren/zurücksetzen?
 
Auf der Homepage vom phpMailer findest du einige Beispiele, die du kopieren und anpassen kannst.
 
Mit Integration der anderen Werte hat die Übermittelung der Daten auch via mail() geklappt

Das ist dann aber keine Garantie, dass dies immer so der Fall ist. Mailer-Klassen nehmen dir viel Arbeit ab, was das Einhalten von RFC-Standards (richtige HEADER-Konfiguration der eMails) betrifft. Werden diese RFCs nicht eingehalten, blocken viele eMail-Anbieter die ankommenden eMails einfach ab!
 
Zurück
Oben