Kontaktformular erstellen (Grundlagen)

Read-Only-Modus

Das 01-Supportforum befindet sich im Read-Only-Modus. Es ist nicht mehr möglich sich zu registrieren, neue Themen zu erstellen oder auf bestehende Themen zu antworten.

Alle Inhalte stehen bis auf absehbare Zeit jedoch weiterhin lesend zur Verfügung.


Bei Fehlern oder Problemen mit PHP-Scripten von 01-Scripts.de erstellen Sie gerne einen Issue-Eintrag auf Github oder nehmen Sie per E-Mail Kontakt auf.

  • Zitat

    Original von Michel
    Super, so funzt es.
    Es hat allerdings einen Schönheitsfehler und zwar kann ich die Email schreiben und die Rechenaufgabe lösen und dann kehrt das Formular durch das "return false" wieder in die Ausgangslage also mit leeren Felder zurück...


    Normalerweise wird in der "return false"-Ausgabe ja der Java-Script-Zurück-Link angezeigt. Wenn man auf den klick wird bei mir normalerweise das Formular mit der Mail wieder angezeigt.
    Ansonsten kannst du auch folgenden Quellcode verwenden:


    [PHP]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <head>
    <title>Kontaktformular</title>
    <meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />
    <meta http-equiv="Content-Language" content="de" />
    </head>
    <body>
    <?PHP
    //Autor: Michael Müller - www.php4u.net
    function check_mail($email)
    {
    if (eregi("^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]{2,4}", $email))
    {
    return TRUE;
    }
    else
    {
    return FALSE;
    }
    }


    //Hier wird überprüft, ob das Formular überhaupt abgesendet wurde und ob das vom Benutzer eingegebene Ergebnis stimmt. Dazu wird das vom Benutzer einggegebene Ergebnis ebenfalls in einem MD5-String gewandelt und mit dem im Formular übergebenen Vergleichsstring verglichen.
    if(isset($_POST['action']) && $_POST['action'] == "mail" && isset($_POST['name']) && $_POST['name'] != "" && isset($_POST['email']) && $_POST['email'] != "" && isset($_POST['betreff']) && $_POST['betreff'] != "" && isset($_POST['nachricht']) && $_POST['nachricht'] != "" && isset($_POST['gleichung']) && md5($_POST['gleichung']) == $_POST['glloesung'] && check_mail($_POST['email']))
    {
    $absender = preg_replace("/[^a-z0-9 !?:;,.\/_\-=+@#$&\*\(\)]/im", "",
    $_POST['email'] );


    $absender = preg_replace("/(content-type:|bcc:|cc:|to:|from:)/im", "",
    $absender );

    $name = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "",
    $_POST['name'] );

    $betreff = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "",
    $_POST['betreff'] );

    $txt = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "",
    $_POST['nachricht'] );


    mail("adresse@adresse.de","{".$_POST['betreff']."}","".$name." hat Dir eine Nachricht geschickt:\n\n".$txt."","From:".$absender."<".$absender.">");


    echo "<p align=\"left\"><b>Ihre Nachricht wurde erfolgreich versandt!</b></p>";
    }
    //Sollte das vom Benutzer errechnete Ergebnis nicht stimmen wird folgende Meldung ausgegeben:
    elseif(isset($_POST['action']) && $_POST['action'] == "mail" && md5($_POST['gleichung']) != $_POST['glloesung'])
    {
    echo "<p align=\"left\"><b>Sie haben nicht alle nötigen Felder ausgefüllt oder die Gleichung nicht
    richtig gelöst.</p>";
    $mailfrom = $_POST['email'];
    $mailname = $_POST['name'];
    $mailbetreff = $_POST['betreff'];
    $mailnachricht = $_POST['nachricht'];
    }
    //Wenn die E-Mail-Adresse syntaktisch nicht korrekt ist
    elseif(isset($_POST['action']) && $_POST['action'] == "mail" && !check_mail($_POST['email']))
    {
    echo "<p align=\"left\"><b>Ihre E-Mail-Adresse ist syntaktisch nicht korrekt.</p>";
    $mailfrom = $_POST['email'];
    $mailname = $_POST['name'];
    $mailbetreff = $_POST['betreff'];
    $mailnachricht = $_POST['nachricht'];
    }



    mt_srand((double)microtime() * 1000000);
    $oprand = mt_rand(1,3);


    switch($oprand)
    {
    case 1:
    $gl1 = mt_rand(1,20); //Zufallszahl zwischen 1 und 20
    $op = "+"; //Rechenoperator für die Ausgabe später
    $gl2 = mt_rand(1,10); //Zweite Zufallszahl zwischen 1 und 10
    //Anschließend wird das Ergebnis mit PHP berechnet und in einem MD5-String verwandelt. Dieser wird später im Formular zur nötigen Kontrolle übergeben.
    $loesungmd5 = md5($gl1+$gl2);
    break;
    case 2:
    //Entsprechend der ersten Operation. Das Zahlenspektrum der Zufallszahlen wurde jedoch anders gewählt.
    $gl1 = mt_rand(10,30);
    $op = "-";
    $gl2 = mt_rand(1,$gl1);
    $loesungmd5 = md5($gl1-$gl2);
    break;
    case 3:
    //Siehe case 1 und case 2
    $gl1 = mt_rand(2,10);
    $op = "x";
    $gl2 = mt_rand(2,6);
    $loesungmd5 = md5($gl1*$gl2);
    break;
    }
    ?>
    <form action="<?PHP echo $PHP_SELF; ?>" method="post">
    <table border="0" width="90%">
    <tr>
    <td align="right"><b>Name*:</b></td>
    <td><input type="text" name="name" value="<?PHP echo $mailname; ?>" size="33" /></td>
    </tr>
    <tr>
    <td align="right"><b>Your email*:</b></td>
    <td><input type="text" name="email" value="<?PHP echo $mailfrom; ?>" size="33" /></td>
    </tr>
    <tr>
    <td align="right"><b>Subject*:</b></td>
    <td><input type="text" name="betreff" value="<?PHP echo $mailbetreff; ?>" size="33" /></td>
    </tr>
    <tr>
    <td align="right"><b>Message*:</b></td>
    <td><textarea name="nachricht" rows="10" cols="40" style="font-family:Verdana, Arial, Helvetica, sans-serif;"><?PHP echo $mailnachricht; ?></textarea></td>
    </tr>


    <!--An dieser Stelle werden die beiden Gleichungsvariablen und der Rechenoperator via PHP ausgegeben-->
    <tr>
    <td align="right"><b>Spamschutz*:</b></td>
    <td>Bitte lösen Sie die Gleichung: <?PHP echo $gl1." ".$op." ".$gl2; ?> = <input type="text" name="gleichung" size="4" /></td>
    </tr>


    <tr>
    <td align="right">
    <input type="hidden" name="include" value="contact" />
    <input type="hidden" name="action" value="mail" />
    <!--In einem "hidden-field" wird die Lösung der Gleichung als MD5-String zur späteren Überprüfung übergeben. -->
    <input type="hidden" name="glloesung" value="<?PHP echo $loesungmd5; ?>" />
    <input type="reset" class="input" value="Inhalte Löschen" />
    </td>
    <td align="right"><input type="submit" class="input" value="Abschicken" /></td>
    </tr>


    </table>
    </form>
    </body>


    </html>[/PHP]


    Zitat

    Original von Michel
    Danke und die Johnny Cash CD kommt bestimmt...
    Hör ich auch gerne :)


    Man dankt :)

  • <!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=iso-8859-1" />
    <title>Unbenanntes Dokument</title>
    <style type="text/css">
    <!--
    .Stil1 {
    font-size: 25px;
    font-weight: bold;
    }
    -->
    </style>
    </head>
    <?PHP
    if(isset($_POST['send']) && $_POST['send'] == "ja")
    {


    $absender = preg_replace("/[^a-z0-9 !?:;,.\/_\-=+@#$&\*\(\)]/im", "",
    $_POST['email'] );


    $absender = preg_replace("/(content-type:|bcc:|cc:|to:|from:)/im", "",
    $absender );


    $txt = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "",
    $_POST['nachricht'] );


    mail("LaCrizz@web.de","Betreff","Folgende Nachricht wurde über das Kontaktformular an Sie versand:\n\n".$txt."","From:".$absender."<".$absender.">");


    echo "<p align=\"center\"><b>Ihre Nachricht wurde erfolgreich an den Webmaster versand!</b></p>";
    }
    ?>


    <form action="<?PHP echo $PHP_SELF; ?>" method="post">
    <body>
    <table width="460" height="402" border="1">
    <tr>
    <td colspan="2"><span class="Stil1">Hier bitte die Ergebnise der Englischen Liga eintragen!! </span></td>
    </tr>
    <tr>
    <td height="36">Benutzername:</td>
    <td><form id="form5" name="form5" method="post" action="">
    <label>
    <input type="text" name="Name" size="25" />
    </label>
    </form>
    </td>
    </tr>
    <tr>
    <td width="210">Spieltag:</td>
    <td width="234">
    <label></label>
    <form id="form1" name="Spieltag" method="post" action="">
    <label>
    <input type="text" name="Spieltag" size="20" />
    </label>
    </form>
    </td>
    </tr>
    <tr>
    <td>Spielerpaarung:</td>
    <td><input type="text" name="Spielpaarung" size="35" /></td>
    </tr>
    <tr>
    <td height="55">Ergebnis</td>
    <td><input type="text" name="Ergebnis" size="20" /></td>
    </tr>
    <tr>
    <td height="130"><p>Torsch&uuml;tzen, </p>
    <p>Karten </p>
    <p>usw. </p></td>
    <td><textarea name="Ereignisse" rows="5" cols="35"></textarea></td>
    </tr>
    </table>
    <p>
    <input name="submit" type="submit" value="Abschicken" />
    <input name="reset" type="reset" value="Zurücksetzen" />
    </p>
    </body>
    </html>



    Mein Problem ist wenn ich in die Felder der hochgeladenen php Datei
    ausfülle und dann auf senden gehe kommt keine Bestätigung und ich keine E-Mail ^^


    Bitte helf mir

  • Damit sollte es funktionieren:


    [PHP]<!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=iso-8859-1" />
    <title>Unbenanntes Dokument</title>
    <style type="text/css">
    <!--
    .Stil1 {
    font-size: 25px;
    font-weight: bold;
    }
    -->
    </style>
    </head>
    <?PHP
    if(isset($_POST['send']) && $_POST['send'] == "ja")
    {


    $txt1 = preg_replace( "/(content-type:|bcc:|cc:|to:|from /im", "",
    $_POST['name'] );
    $txt2 = preg_replace( "/(content-type:|bcc:|cc:|to:|from /im", "",
    $_POST['spieltag'] );
    $txt3 = preg_replace( "/(content-type:|bcc:|cc:|to:|from /im", "",
    $_POST['spielpaarung'] );
    $txt4 = preg_replace( "/(content-type:|bcc:|cc:|to:|from /im", "",
    $_POST['ergebnis'] );
    $txt5 = preg_replace( "/(content-type:|bcc:|cc:|to:|from /im", "",
    $_POST['ereignisse'] );


    mail("LaCrizz@web.de","Betreff","Folgende Nachricht wurde über das Kontaktformular an Sie versand:\n\n".$txt1."\n".$txt2."\n".$txt3."\n".$txt4."\n".$txt5."\n");


    echo "<p align=\"center\"><b>Ihre Nachricht wurde erfolgreich an den Webmaster versand!</b></p>";
    }
    ?>


    <form action="<?PHP echo $PHP_SELF; ?>" method="post">
    <body>
    <table width="460" height="402" border="1">
    <tr>
    <td colspan="2"><span class="Stil1">Hier bitte die Ergebnise der Englischen Liga eintragen!! </span></td>
    </tr>
    <tr>
    <td height="36">Benutzername:</td>
    <td>
    <input type="text" name="name" size="25" />
    </form>
    </td>
    </tr>
    <tr>
    <td width="210">Spieltag:</td>
    <td width="234">
    <input type="text" name="spieltag" size="20" />
    </td>
    </tr>
    <tr>
    <td>Spielerpaarung:</td>
    <td><input type="text" name="spielpaarung" size="35" /></td>
    </tr>
    <tr>
    <td height="55">Ergebnis</td>
    <td><input type="text" name="ergebnis" size="20" /></td>
    </tr>
    <tr>
    <td height="130"><p>Torsch&uuml;tzen, </p>
    <p>Karten </p>
    <p>usw. </p></td>
    <td><textarea name="ereignisse" rows="5" cols="35"></textarea></td>
    </tr>
    </table>
    <p>
    <input name="submit" type="submit" value="Abschicken" />
    <input name="reset" type="reset" value="Zurücksetzen" />
    <input type="hidden" name="send" value="ja" />
    </p>
    </form>
    </body>
    </html>[/PHP]

  • Hallo,


    ich habe ein Problem und zwar ich habe das Script eingebaut, und es klappte auch alles prima,


    jedoch dann musste ich die Gobal_Registers umstellen, ist es davon abhängig ob das script klappt?


    ansonsten habe ich etwas anderes kaputt gemacht :)


  • Das Script sollte eigentlich davon unabhängig funktionieren.