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.

  • Wie in meinem vorherigen Posting beschrieben hat das Script vom ersten Posting die Anzeige aus meinem vorherigen Posting ausgegeben sobald ich diese mit meinem internetexplorer geöffnet habe. Es sind Teile vom code zu sehen die da eindeutig nicht hingehören.
    hier nochmal das script:


    <!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" />
    <meta name="Author" content="Michael Lorer - 01-Scripts.de" />
    </head>
    <body bgcolor="#FFFFFF">


    <?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("email@adresse.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">
    E-Mail-Adresse: <input type="text" name="email" size="20" /><br />
    Nachricht: <textarea name="nachricht" rows="5" cols="20"></textarea><br />
    <input type="hidden" name="send" value="ja" />
    <input type="reset" value="Löschen" /><input type="submit" value="Abschicken" />
    </form>



    </body>


    </html>

  • Du kannst ein PHP-Script auch nicht einfach in deinem Internet-Explorer öffnen, wenn die Datei auf deinem Desktop liegt. Da kann das natürlich nicht funktionieren :rolleyes:.
    PHP-Dateien lassen sich nur auf einem Webserver bzw. auf einem localhost richtig anzeigen und ausgeben.


    Die Fehler sind also nicht auf die Datei aus diesem Thread sondern auf die falsche Verwendung auf deiner Seite zurückzuführen.
    Wenn du auch in Zukunft mit sowas erfolg haben willst solltest du dich mit der Materie anhand von Büchern oder z.B. hiermit auseinandersetzten.


    MfG,
    ML

  • Zitat

    Original von Slayer1969Berlin
    TUT MIR LEID ABER ZWISCHEN MEINEN ARBEITSZEITEN FEHLT MIR LEIDER DIE ZEIT WEIL ICH HAB AUCH NOCH NE FAMILIE: TROTZDEM VIELEN DANK: EIGENTLICH HOFFTE ICH JEMANDEN ZU FINDEN DER MIR AUF MEIN ERSTES POSTING NE LÖSUNG ANBIETET:


    Naja.
    Wenn du immer nur so Stück für Stück mit den Informationen rausrückst ist das nicht gerade einfach.
    Zum Beispiel wäre ein Link zu deiner Internetseite sehr hilfreich.
    Prinzipiell versuch es mal indem du einfach den HTML-Code aus dem ersten Post an die gewünschte Stelle in deinem Homepage einbaust. Diesen Code kannst du dann an das Aussehen anpassen. Wenn das fertig ist speicherst du die Datei mit der Endung .php und fügst JETZT mit einem einfachen Text-Editor (z.B. Notepad) den PHP-Code aus dem 1. Post OBERHALB des HTML-Codes an einer beliebigen Stelle innerhalb des <body>-Tags ein.


    Danach die Datei auf den Webspace laden, aufrufen und testen.
    P.S.
    Die E-Mail-Adresse im PHP-Code muss noch angepasst werden.

  • Danke erst mal. ich hättenicht gedacht das das so kompliziert wird. sorry das ich so aufbrausend war *schäm" aber die sache ist die das ich dachte ich könnte das erst mal offline kreieren aber ich werds mal versuchen. habs versucht hab das scrit aus der zip datei verwendet nun ist das problem das ich eine fehlermeldung auf meiner mailbox bekommen habe die ich absolut nich kapiere. folgende zeile hab ich zuvor geändert:
    mail("slaytanicwehrmacht@lycos.de.de","Betreff","Folgende Nachricht wurde über das Kontaktformular an Sie versand:\n\n".$txt."","From:".$absender."<".$absender.">");


    und siehe da ich hab den fehler gefunden einmal de zuviel ;-) bin schon seit gestern morgen 6 uhr auf den beinen und hab noch 6 stunden alte leute gepflegt das zerrt. danke erst mal später brauch ich noch n tipp wie ich nach dem drücken der sendetaste eine andere seite aufrufen kann. gute n8 und DAAAAAAAAAAAAAAAAANNNNNNNNNNNNNNNNNNNNNNKKKKKKKKKKKKKKKKKKKEEEEEEEEEEEEEEEE
    Supie

  • Zitat

    Original von Slayer1969Berlin
    und siehe da ich hab den fehler gefunden einmal de zuviel ;-) bin schon seit gestern morgen 6 uhr auf den beinen und hab noch 6 stunden alte leute gepflegt das zerrt. danke erst mal später brauch ich noch n tipp wie ich nach dem drücken der sendetaste eine andere seite aufrufen kann. gute n8 und DAAAAAAAAAAAAAAAAANNNNNNNNNNNNNNNNNNNNNNKKKKKKKKKKKKKKKKKKKEEEEEEEEEEEEEEEE
    Supie


    Das mit dem zweiten .de hätte ich dir spätestens jetzt auch gesagt ;)
    Frag nur, was du wissen willst. Allerdings bin ich übers Wochenende weg und kann erst wieder am Montag was dazu sagen.


    Gruß,
    Michael

  • Wenn das HTML-Formularfeld auch "subject" heißt sollte das eigentlich funktionieren.
    Allerdings solltest du darauf achten, dass beim Einfügen von Variablen in Strings die Syntax so lauten sollte:
    [PHP]<?PHP
    $var = "Test";
    $string = "Ich bin ein ".$var."-String";
    ?>[/PHP]
    Nicht so:
    [PHP]<?PHP
    $var = "Test";
    $string = "Ich bin ein $var-String";
    ?>[/PHP]


    MfG,
    Michael Lorer

  • Ich habe den Betreff hingekriegt! Ich habe die Validierung aller Inputs geschafft 8o


    Nun meine letzte und allesenstscheidende Frage?
    Wie kann ich die Email auf die Gültigkeit in deinem Code einsetzen.
    Ich habe in den Foren nachgeschaut und bin ein klein bisschen schlauer.


    Ich möchte nun wenn alle ausser das email input das zum Beispiel nicht richtig
    ausgefüllt ist eine separate Angabe machen.

  • Mit folgender Funktion kannst du eine E-Mail-Adresse auf Gültigkeit überprüfen:


    [PHP]<?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;
    }
    }
    ?>[/PHP]


    Die if-Abfrage dafür sieht dann so aus:
    [PHP]<?PHP
    if(!check_mail($_POST['email'])){
    //Ausgabe, wenn E-Mail nicht gülti
    }
    ?>[/PHP]

  • Probier es mal damit:


    [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.<br />
    Bitte gehen Sie <a href=\"javascript:history.back()\">zurück</a>.</b></p>";
    }
    //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.<br />
    Bitte gehen Sie <a href=\"javascript:history.back()\">zurück</a>.</b></p>";
    }



    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" size="33" /></td>
    </tr>
    <tr>
    <td align="right"><b>Your email*:</b></td>
    <td><input type="text" name="email" size="33" /></td>
    </tr>
    <tr>
    <td align="right"><b>Subject*:</b></td>
    <td><input type="text" name="betreff" 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;"></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]

  • 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...


    Bin schon froh das es so ist!
    Danke und die Johnny Cash CD kommt bestimmt...
    Hör ich auch gerne :)