Kontaktformular Webseite

  • Hallo alle zusammen,
    Ich versuche mich grade daran ein Kontaktformular für eine Webseite zu erstelle - leider schaffe ich es nicht…
    sobald ich auf "Senden" drücke, wird das php script nicht ausgeführt, sondern mir nur im Browser angezeigt (ich teste das ganze aufgrund des fehlenden Webspace nur lokal)

    Mein Html code:

    <h2>Contact Form</h2>
    <form id="ContactForm" action="mail.php" method="POST">
    <div>
    <div class="wrapper">
    <span>Name:</span>
    <input type="text" class="input" name="Name" placeholder="Hier vollen Namen eingeben">
    </div>
    <div class="wrapper"> <span>Email:</span>
    <input type="text" class="input" name="Email" placeholder="Hier gültige Email eingeben">
    </div>
    <div class="wrapper"> <span>Betreff:</span>
    <input type="text" class="input" name="Subject" placeholder="Hier Betreff eingeben" >
    </div>
    <div class="textarea_box"> <span>Nachricht:</span>
    <textarea name="Message" cols="1" rows="1"></textarea>

    </div>

    <span><p></p></span>
    <input type="submit" name="submit" value="Send" class="button">
    <input type="reset" name="clear" value="Clear" class="button">
    </div>
    </form>


    und der php code:


    <?php
    if ($_POST['submit']) {
    $field_Name .= $_POST['Name'];
    $field_Email .= $_POST['Email'];
    $field_Message .= $_POST['Message'];
    $field_Subject .= $_POST['Subject'];
    $mail_to = 'max@mustermann.com';
    $subject = 'Contact Form Reply - '.$field_Subject;

    $body_message .= 'From: '.$field_Name."\n";
    $body_message .= 'Name: '.$field_Name."\n";
    $body_message .= 'Email: '.$field_Email."\n";
    $body_message .= 'Message: '.$field_Message;"\n";

    $headers = 'From: '.$field_Email."\r\n";
    $headers .= 'Reply-To: '.$field_Email."\r\n";

    $mail_status = mail($mail_to, $subject, $body_message, $headers);

    if ($mail_status) { ?>
    <script language="javascript" type="text/javascript">
    alert('Danke für deine Nachricht…');
    window.location = 'contactus.htm';
    </script>
    <?php
    }
    else { ?>
    <script language="javascript" type="text/javascript">
    alert('Message failed.');
    window.location = 'contactus.htm';
    </script>
    <?php
    }
    } // close if ($_POST['submit'])
    } ?>


    Ich würde mcih freuen wenn jemand da mal drüberkucken könnte!

    Danke schonmal!!


  • sobald ich auf "Senden" drücke, wird das php script nicht ausgeführt, sondern mir nur im Browser angezeigt


    Du hast einen Webserver mit PHP installiert? Und du rufst das Script im Browser so oder so ähnlich http://localhost/script.html auf?
    Wenn du keinen Webserver hast, dann google mal nach XAMPP, ist die einfachste Lösung.

  • Danke für die schnelle Antwort!
    In der zwichenzeit habe ich auch gelesen, dass ich um das php script zu testen einen virtuellen server brauche. Habe dafür MAMP installiert.
    Wenn ich nun über diesen die Webseite aufrufe, dann bekomme ich nichtmehr den php quellcode zu Gesicht, dafür aber einfach ein weißes Fenster und die E-mail wird auch nciht zugestellt...

  • Das hilft meistens:

    Richtig debuggen

    1.Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2.Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL);
    3.Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
    4.Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    5.An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysql_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
    6.Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    7.Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    8.Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    9.Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

  • Ich habe dem php skript error_reporting(E_ALL); ini_set('display_errors', true); vorrangestellt. Mir wird dennoch keine Fehelrmeldung ausgegeben, sondern nach dem "klicken" auf "senden" öffnet sich lediglich wie zuvor ein weißes Fenster.

    Ich denke man merkt, dass für mich dies ziemliches Neuland ist, ich hoffe ihr habt ein bischen Geduld mit mir ;D
    Danke schonmal!

  • Du hast in dem PHP-Script diese Zeilen eingebaut und es kommen keinerlei Meldungen?? Kann eigentlich nicht sein. Versuche es nochmal und sieh' dir mal den HTML-Code an, den der Browser bekommt. Vielleicht sieht man dann etwas.

  • Ja, ich habe das eingefügt wie du gesagt hast und ich bekomme keinerlei Meldungen. Bei der Quellcode-Ansicht im Safari taucht auch nichts auf sobald ich auf "senden" drücke... es ist einfach eine komplett leere seite die geöffnet wird. Warum auch immer.

  • Baue mal vor

    PHP
    if ($_POST['submit'])


    diese Zeile ein:

    PHP
    die("Im PHP-Script");


    Was passiert dann?

  • Das gleiche es passiert nichts bis auf dass sich ein weißes Fenster öffnet :(

  • Guck mal in den Logfiles des Webservers nach, ob da was zu finden ist. Das scheint mir ein Konfigurationsfehler von Mamp zu sein.

  • Ja da haben wir es! eine lange liste von Fehlermeldungen! Ein Paar Punkte und ein paar Klammern die nicht richtig waren. Hab diese Feher beseitigt. Jetzt sieht der php code so aus:

    <?php

    if ($_POST['submit']) {
    $field_Name = $_POST['Name'];
    $field_Email = $_POST['Email'];
    $field_Message = $_POST['Message'];
    $field_Subject = $_POST['Subject'];
    $mail_to = 'max4@mustermann.com';
    $subject = 'Contact Form Reply - '.$field_Subject;

    $body_message .= 'From: '.$field_Name."\n";
    $body_message .= 'Name: '.$field_Name."\n";
    $body_message .= 'Email: '.$field_Email."\n";
    $body_message .= 'Message: '.$field_Message;"\n";

    $headers = 'From: '.$field_Email."\r\n";
    $headers .= 'Reply-To: '.$field_Email."\r\n";

    $mail_status = mail($mail_to, $subject, $body_message, $headers);

    if ($mail_status) { ?>
    <script language="javascript" type="text/javascript">
    alert('Danke für deine Nachricht…');
    window.location = 'contacts.html';
    </script>
    <?php
    }
    else { ?>
    <script language="javascript" type="text/javascript">
    alert('Message failed.');
    window.location = 'contacts.html';
    </script>
    <?php
    }
    // close if ($_POST['submit'])
    } ?>

    Wenn ich nun auf Senden klicke, dann kommt ein popup Fenster mit dem text message failed, das soll es ja auch wenn irgendwas nciht klappt, das ist schonmal gut! keine weißes Fenster mehr.
    Der php-Error log sagt: Undefined variable: body_message in /Applications/MAMP/htdocs/mail.php on line 13 ; folglich liegt hier ein fehler vor: $body_message .= 'From: '.$field_Name."\n";

    Tausend dank schonmal dafür dass das Kontaktformular bis heirhin schonmal läuft!!!

  • PHP
    $body_message .= 'From: '.$field_Name."\n";


    Was bedeutet diese Zeile? Hänge folgenden Text an $body_message. Aber wie soll man etwas an eine Variable hängen, wenn diese noch garnicht existiert. Also muss der . beim = weg. Danach existiert diese Variable und bei

    PHP
    $body_message .= 'Name: '.$field_Name."\n";


    meckert PHP nicht mehr rum.

    Die Fehlermeldung "Message failed" kommt daher,weil du keinen Mail-Server installiert hast, an den PHP die Mail weiterreichen kann.

  • Danke! Das php script funktioniert nun ohne dass es eine Fehlermeldung gibt!
    Wie müsste im php script die weiterleitung auf einen mail server aussehen ?

    Danke für die nette Hilfe !

  • Jetzt wird es, so befürchte ich, für dich etwas komplizierter: verzichte auf die mai()-Funktion von PHP und nutze den phpMailer. Siehe http://phpmailer.worxware.com/ und beachte die Beispiele.
    Mit dem phpMailer kannst du Mails über deinen existierenden Mail-Account versenden, ohne einen eigenen Mail-Server installieren zu müssen.

  • Danke für deine Unterstützung! Ich werde es mal damit versuchen! Danke!

  • Das Programm scheint genau das machen zu können was ich benötige um die E-mails über mein Kontaktformular versenden zu können aber ich komme nicht wirklich dahinter wie ich den PHPMailer in mein script einbauen muss, damit es funktioniert…


    Wärst du so nett da nochmal drüber zukucken?

  • Im groben kann ich dieses Beispiel nachvollziehen, das Problem habe ich nur dabei das ganze jetzt auf mein phpscript anzuwenden da ich mit den verschieden Bezügen durcheinander komme. also Welche zeilen von meinem script ersetzt werden müssen.

  • Gehen wir es mal durch


    Die Zeilen musst du bei dem Beispiel für dich anpassen:


    Mit den Infosmüsstest du klar kommen, oder? ;)

  • Wahrscheinlich stell ich mich grade wirklich dämlich an aber klappen tuts dennoch nicht :D ich glaub ich schau mir das Morgen nochmal ganz in Ruhe an. Kann doch nicht sein dass das nicht läuft :(

    Danke für deine Hilde trotzdem!!!