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

Benötige dringend Hilfe für Kontaktformular...

@Wustenross: Many Thanks!
Bin schwer beeindruckt - vielen Dank für deine Mühe!

Erst mal zum testen das PHP-Script für den Empfang der Formulardaten und das abschicken einer E-Mail.
Ich selbst habe es nicht getestet. Eingabeprüfung und so weiter ist noch nicht implemeniert, du sollst ja auch deine Fehler selber finden und verstehen was da vor sich geht.

Ja, ich möchte auch keine vorgekauten Sachen zum Copy & Pasten!
Ich möchte ja schon was mitnehmen - muss zu meiner Schande gestehen, dass ich bereits einen echten PHP-Kurs hatte vor ca. 3 Jahren! Aber wenn man nicht jeden Tag damit arbeitet und zu tun hat...
Mich interessiert die Materie aber durchaus!


Die soll folgendes bewirken.
Spambots füllen alle Formularfelder aus, aus Gewohnheit und weil sie so programmiert wurden. Wir bieten hier also ein Input-Feld an, welches wir irgendwie benennen und mit CSS auf unsichbar setzen. Spambots interessieren sich nicht für CSS, das nutzen wir aus. Ist mehrfach so eingesetzt und funktioniert prima und wir brauchen kein ärgerliches Captcha, die alle nur halbherzig funktionieren und nur den User ärgern. Aber wir machen hier was Benutzerfreundliches.
Also noch mal Feld drin lassen, mit CSS den Selector auswählen und visibility auf hidden setzen. Kriegst du das hin?


Wow! Didn't know that!
Danke für die Erläuterung!
Die Sache mit dem captcha wäre mein nächstes Anliegen gewesen - das erübrigt sich dann nämlich!
Ein text input feld im css auf hidden zu setzen kriege ich wahrlich hin...HTML & CSS krieg ich überwiegend gebacken, php weniger!
Javascript hat so unendlich viele Möglichkeiten aufgrund der Objekt-Orientierung aber da es client-seitig ist und somit
"abschaltbar" scheue ich mich davor es zu lernen...vielleicht ein Fehler!
Daher bevorzuge ich PHP als nächste Lernstufe!


Gib dann mal Feedback ob es funktioniert, dann machen wir weiter.

Ja, mache ich auch jeden Fall!
Wird aber Freitag, da ich morgen bei Kunden bin....
Bin gespannt - bis dahin aber erstmal vielen Dank.
More to come....

Grüße
L'mate
 
Mahlzeit...

So, habe nun auf Grundlage von Wustersoss Grundgerüst mein Script modifiziert!
Allerdings mit einer Änderung:
Ich möchte bei erfolreichen Versand, wie auch bei nicht erfolgreichem Versand keine Ausgabe (echo)
haben sondern ein entsprechend hinterlegtes HTML-Dokument aufrufen.
Wenn ich das Formular so nutze, wie es ist, erhalte ich immer die Else variante also
das falschkontakt.html, obwohl alle Felder ausgefüllt sind...
Wahrscheinlich ein Denkfehler meinerseits...
Bin gespannt auf die "Auflösung".....

Siehe Hier:

<?php
//Variablen//
$empfaenger = '[email protected]';
$betreff = 'Neue Nachricht durch HP Kontaktformular';
$header = 'From: [email protected]'. "\r\n".
Reply-To: [email protected]'. "\r\n".
$geschlecht = $_POST['gender'];
$vorname = $_POST['vorname'];
$nachname = $_POST['nachname'];
$firma = $_POST['firma'];
$email = $_POST['email'];
$nachricht = $_POST['nachricht'];

//Datenübergabe
$nachricht = wordwrap($nachricht, 70); //Nachricht auf 70 Stellen pro Zeile aufteilen
$kontaktdaten = ""; // Variable leeren
$kontaktdaten .= "Geschlecht: " . $geschlecht . "\r\n"; // Variablen füllen - Zeilenumbruch am Ende
$kontaktdaten .= $kontaktdaten . "Vorname: " . $vorname . "\r\n";
$kontaktdaten .= $kontaktdaten . "Nachname: " . $nachname . "\r\n";
$kontaktdaten .= $kontaktdaten . "Firma: " . $firma . "\r\n";
$kontaktdaten .= $kontaktdaten . "E-Mail: " . $email . "\r\n";
$kontaktdaten .= $kontaktdaten . "Nachricht: " . $nachricht . "\r\n";

If (mail($empfaenger, $betreff, $header, $kontaktdaten)) // E-Mail abschicken und auf Fehler abfragen
{
$mailsuccess = header("Location: ../html/gutkontakt.html");// Aufrufen HTML-Dokument
}
Else
{
$mailfail = header("Location: ../html/falschkontakt.html"); // Aufrufen HTML-Dokument
}
// Beenden von PHP und Ausgabe an den Client



?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
</head>

<body>



</body>
</html>



Und wenn du Zeit und Lust hast wäre ich dann auch bereit für die Formulardatenprüfung!
Eine weitere Frage zum Reply:
Gehört dort nicht eigentlich die E-Mail-Adresse die in $email ausgelesen wurde, rein???

Grüße L'mate
 
Hallo,

hier erst mal das PHP-Script für die Entgegennahme der Daten aus dem Kontaktformular, Prüfung der Eingabe und Versand der E-Mail mit den Daten aus dem Kontaktformular.

HTML:
<?php
 
$geschlecht = trim($_POST['gender']);    // Wir entfernen mit trim alle Leerzeichen am Anfang und Ende
$vorname = trim($_POST['vorname']);
$nachname = trim($_POST['nachname']);
$firma = trim($_POST['firma']);
$email = trim($_POST['email']);
$nachricht = trim($_POST['nachricht']);

//  Formulardatenpruefung
$Meldung = "";    // eventuelle Meldungen loeschen
if (!ctype_digit($geschlecht) || ($geschlecht == "")) Exit;   // Wenn die Anrede keine Ziffer ist Abbruch, da was faul
$vorname = substr($vorname, 0, 25);    // Kuerzen der Eingabe auf vorgegebene Laenge
$nachname =  substr($nachname, 0, 25);
$email = substr($email, 0, 256); 
$firma = substr($firma, 0, 30);  // bei Firma wird nur gekuerzt weil auch *BEST!* GmbH & Co.KG moeglich ist
if ($vorname == "") {$Meldung = "Feld Vorname ist leer.\r\n";}   // Wir pruefen ob Feld leer 
Elseif (!ctype_alpha($vorname)) { $Meldung = "Feld Vorname enthält unerlaubte Zeichen.";}   // Wir pruefen auf Zeichen von a-Z
if ($nachname == "") {$Meldung .= "Feld Nachname ist leer.\r\n";}
Elseif (!ctype_alpha($nachname)) {$Meldung .= "Feld Nachname enthält unerlaubte Zeichen.\r\n";}
// Pruefung der E-Mail auf erlaubte Zeichen
$echeck = str_replace("@", "", $email, $count);
$echeck = str_replace(".", "", $echeck);
$echeck = str_replace("-", "", $echeck);
$echeck = str_replace("-", "", $echeck);
if (!ctype_alpha($echeck)) { $Meldung .= "Feld E-Mail enthält unerlaubte Zeichen.";}
if ( $count !=1) { $Meldung .=  "Die E-Mail ist nicht korrekt.";}  
// Ende der Formulardatenpruefung

                                
if ($Meldung == "") {       // wenn alles richtig ist dann weiter
    // Uebergabe der Daten an den E-Mail-Empfaenger
    $nachricht = wordwrap($nachricht, 70);  //Nachricht auf 70 Stellen pro Zeile aufteilen
    $kontaktdaten = "";   // Variable leeren falls was drin steht
    $kontaktdaten .= "Geschlecht: " . $geschlecht . "\r\n";  // Fuellen mit Zeilenumbruch am Schluss
    $kontaktdaten .= "Vorname: " . $vorname . "\r\n";
    $kontaktdaten .= "Nachname: " . $nachname . "\r\n";
    $kontaktdaten .= "Firma: " . $firma . "\r\n";
    $kontaktdaten .= "E-Mail: " . $email . "\r\n";
    $kontaktdaten .= "Nachricht: " . $nachricht . "\r\n";

    $empfaenger = '[email protected]'; // An wen die E-Mail geht
    $betreff = 'Neue Nachricht von ' . $vorname . ' ' . $nachname . ' durch Kontaktformular:';
    $header = 'From: ' . $email . "\r\n" . 'Reply-To: ' . $email . "\r\n";    // E-Mailheader und Absender
    
    If (mail($empfaenger, $betreff, $kontaktdaten, $header)) // E-Mail abschicken und auf Fehler abfragen
        { 
        $mailsuccess = "Vielen Dank für ihr Interesse. Wir kümmern uns schon drum.";  // Text bei Erfolg
        }
    Else
        {
        $mailsuccess = "Leider gab beim Versand ein Problem, bitte versuchen Sie es später noch mal."; // Text wenn was schief geht
        }
    // beenden von PHP und Ausgabe an den Client
    ?> 
    
    <!DOCTYPE HTML>
    <html>
    <head>
        <meta charset=UTF-8>
        <title>Antwort</title>
        <meta name="description" content="">
    </head>
    <body>
        <h3>
            <?php Echo $mailsuccess; ?>
        </h3>
    </body>
    </html>
 <?php 
 }
 Else if ($Meldung !="") {   // Wenn Fehler beim Ausfuellen gemacht wurden Formular noch mal anzeigen
 ?>
<!DOCTYPE HTML>
<html>         
    <head>                     
        <meta charset=UTF-8>                     
        <title>Beispielformular                  
        </title>                     
        <meta name="description" content="Beispielformular wird an message.php geschickt">                     
        <link rel="stylesheet" href="css/style.css" type="text/css" media="screen"> 
              
<script>  
<!--
function formCheck(form) {
        if (form.vorname.value == "")
    {alert("Ungültiger Vorname!. Vorname muss zwischen 2 - 25 Zeichen lang sein");return false;}
        if (form.nachname.value == "")
    {alert("Ungültiger Nachname. Nachname muss zwischen 2 - 30 Zeichen lang sein");return false;}
        if (form.email.value == "")
    {alert("Falsche oder leere Mail");return false;}
        if (document.form.submit.action != "") {
        document.form.submit.disabled=1;}
}
// -->  
</script>
               
    </head>           
    <body>                      
        <div id=header> 
            <h3>Kontaktformular</h3>                     
        </div>                      
        <div id="formbox_01">
            <?php 
            echo "<h4>" . $Meldung . "</h4>";
            
            ?>                         
            <form action=<?php echo $_SERVER['PHP_SELF'] ?> method="post" enctype="multipart/form-data" OnSubmit="return formCheck(this)">                                 
                <fieldset class="gender">                                                             
                    <label id="frau">Frau *                                                   
                        <input type="radio" name="gender" value="1" <?php if ($geschlecht=="1") echo "checked='true'"?> >                                         
                    </label>                                         
                    <label id="herr">Herr                                                   
                        <input type="radio" name="gender" value="2" <?php if ($geschlecht=="2") echo "checked='true'"?> >                                          
                    </label>                                         
                    <br>                                 
                </fieldset>                                                  
                <fieldset class="data" >                                                            
                    <label for="vorname">Vorname
                    </label>                                                 
                    <input type="text" id="vorname" name="vorname" accesskey="v" maxlength="25" value="<?php Echo $vorname?>">                                                                                  
                    <br>                                         
                    <label for="nachname">Nachname *
                    </label>                                                   
                    <input type="text" id="nachname" name="nachname" accesskey="n" maxlength="30" value="<?php Echo $nachname?>">                                                                              
                    <br>                                         
                    <label for="email">E-Mail *
                    </label>                                                   
                    <input type="text" id="email" name="email" accesskey="e" maxlength="256" value="<?php Echo $email?>">                                                                                  
                    <br>                                         
                    <label for="firma">Firma
                    </label>                                                   
                    <input type="text" id="firma" name="firma" accesskey="f" maxlength="50" value="<?php Echo $firma?>">                                                                                  
                    <br>                                         
                    <label for="nachr">Nachricht
                    </label>   
                    <textarea rows="4" cols="25" name="nachricht" id="nachricht" maxlength="250" value="<?php Echo $nachricht?>">   
                    </textarea> 
                    <input type="text" id="spambot" name="spambot">                                                                                 
                </fieldset>                                 
                <fieldset class="submit">                                         
                    <input type="submit" value="Senden" id="butt_01">                                         
                    <span>                                         
                    </span>                                         
                    <input type="reset" value="Löschen" id="butt_02">                                         
                    <span>                                         
                    </span>                                 
                </fieldset>                         
            </form>                 
        </div>                      
        <div id=footer>                         
            <p> Sie erreichen uns auch telefonisch unter                           
            </p>                   
        </div>             
    </body>
</html> 
<?php
 }
 ?>


Erkennst du jetzt schon dein Problem wenn du auf eine andere Seite weiterleitest, bei Fehleingaben?
 
include die externe datei doch einfach
desweiteren würde ich ein hidden feld mit einer Value machen
welches abgefragt wird bevor das Formular geladen wird somit
kannst du bei einem absenden eines Unvollständigen Formulares
alle Felder welche schon ausgefüllt worden sind beibehalten und
der User muss nicht alle nocheimal ausfüllen.

MFG devilseye
 
Zurück
Oben