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

Kontaktformular mit Fehlern

KlTeufelchen84

Neues Mitglied
Hallo meine Lieben,
da bin ich mal wieder und diesmal nicht mit HTML oder JavaScript.. Nein heute brauche ich eure Hilfe bei PHP

Ich habe folgendes Script aufgebaut:
Code:
<?php
// Variablen der Datenfelder
   $submit   = $_POST['submit'];
   $name    = $_POST['name'];
   $strasse    = $_POST['strasse'];
   $ort     = $_POST['ort'];
   $telefon = $_POST['telefon'];
   $mobil   = $_POST['mobil'];
   $email   = $_POST['mail'];
   $web     = $_POST['web'];
   $text       = $_POST['text'];

   if ($submit)
   {
        if ($name&&$email&&$text)
        {
            $to = "[email protected]";
            $betreff = "Nachricht vom Kontaktformular";
            $body = "Von: $name /n E-Mail:$email /n Adresse:$strasse&&$ort /n Telefon:§telefon&&$mobil /n Website:$web /n Mitteilung:$text";
            $header = "From:$email";
            
            mail($to, $betreff, $body, $header);
        }
        else
        echo "Bitte Namen, E-Mail und Nachricht eingeben";        
   }


echo "
<html>

<body>

            <form action='kontakt.php' method='post'>
                Name, Vorname: <input name='name' type='text' size='40' maxlength='40'/>
                Stra&szlig;e; Nr.: <input name='strasse' type='text' size='40' maxlength='40'/>
                PLZ, Wohnort: <input name='ort' type='text' size='40' maxlength='40'/>
                Telefon: <input name='telefon' type='text' size='40' maxlength='40'/>
                Mobil: <input name='mobil' type='text' size='40' maxlength='40'/>
                E-Mail: <input name='mail' type='text' size='40' maxlength='40'/>
                Internetseite: <input name='web' type='text' size='40' maxlength='40'/>
                Ihre Mitteilung:<textarea name='text' cols='30' rows='10'>Bitte geben Sie Ihre Mitteilung ein</textarea>
                <input class='Button' name='Absenden' type='submit' value='Absenden' />
                <input class='Button' name='delete' type='reset' value='L&ouml;schen' />
                
            </form>

</body>

</html>
";
?>
Dieser dient rein dem Übungszweck, php besser zu verstehen.. Nur finde ich hier meinen Fehler nicht. Die Datenfelder sind zu sehen, aber wenn ich etwas eintrage, dann versendet er es nicht auf die angegebene E-Mail...
Ich habe Xampp und es dort auf den Server geladen, also daran kann es nicht liegen..

Ich würde mich freuen wenn ihr mir wieder einmal helfen könntet *liebschau ;-)*
 
Werbung:
Wenn du XAMPP nutzt, musst du einen Mailserver einrichten. Mercury ist mit dabei.
So einfach mails über XAMPP schicken geht leider nicht.
 
am besten testest du das sowieso auf dem server, wo das script eingesetzt werden soll, da die unterschiedlichen anbieter auch oftmals unterschiedliche einstellungen aufweisen.
dann nützt es dir nichts, wenn es in deinem XAMPP einwandfrei funktioniert, aber online dann wieder nur quatsch rauskommt ;)
 
Werbung:
PHP:
$email   = $_POST['mail'];
$header = "From:$email";
mail($to, $betreff, $body, $header);

Ich denke, das ist eine Spamschleuder.

- Email Injection - SecurePHPWiki

Nutze Mailer-Klassen wie den PHPMailer, die Schutzmechanismen gegen diese Art von Injection enthalten.
 
Versenden tut er aber....

So dass versenden klappt jetzt, aber ich habe nun ein anderes Problem
:
Das Formular soll Pflichtfelder haben und diese werden geprüft, aber er versendet diese trotzdem.. vorher hat es geklappt nu nicht mehr..

Code:
<?php
    // Variablen der Datenfelder
    $name = $_POST["name"];
    $strasse = $_POST["strasse"];
    $ort = $_POST["ort"];
    $telefon = $_POST["telefon"];
    $mobil = $_POST["mobil"];
    $email = $_POST["mail"];
    $web = $_POST["web"];
    $text = $_POST["text"];
    $Empfaenger = "newuser@localhost";
    $header = "newuser@localhost";
    
    // Spricht den Absende-Button an
    if($_POST['submit']) 
    {
        if(empty($_POST['name']) || empty($_POST['mail']) || empty($_POST['text'])) 
        {
            echo "Bitte gehen Sie <a href=\"javascript:history.back();\">
            zur&uuml;ck</a> und f&uuml;llen Sie alle Felder aus";
            // Fehlermeldung
        }
    }
    

    // Wenn alles ausgefüllt ist, absenden
    else
    {
        mail($Empfaenger, $name, $text, "From: "
        .$_POST['mail']);
    }
?>
 
PHP:
   // Variablen der Datenfelder
 $name = $_POST["name"];
    $strasse = $_POST["strasse"];
    $ort = $_POST["ort"];
    $telefon = $_POST["telefon"];
    $mobil = $_POST["mobil"];
    $email = $_POST["mail"];
    $web = $_POST["web"];
    $text = $_POST["text"];
    $Empfaenger = "newuser@localhost";
    $header = "newuser@localhost";
    
    // Spricht den Absende-Button an
    if($_POST['submit']) 
    {
        if(empty($_POST['name']) || empty($_POST['mail']) || empty($_POST['text'])) 
        {
            echo "Bitte gehen Sie <a href=\"javascript:history.back();\">
            zur&uuml;ck</a> und f&uuml;llen Sie alle Felder aus";
            // Fehlermeldung
        }    else // Wenn alles ausgefüllt ist, absenden
    {
        mail($Empfaenger, $name, $text, "From: "
        .$_POST['mail']);
    }

   


 }
 
Werbung:
PHP:
   // Variablen der Datenfelder
 $name = $_POST["name"];
    $strasse = $_POST["strasse"];
    $ort = $_POST["ort"];
    $telefon = $_POST["telefon"];
    $mobil = $_POST["mobil"];
    $email = $_POST["mail"];
    $web = $_POST["web"];
    $text = $_POST["text"];
    $Empfaenger = "newuser@localhost";
    $header = "newuser@localhost";
    
    // Spricht den Absende-Button an
    if($_POST['submit']) 
    {
        if(empty($_POST['name']) || empty($_POST['mail']) || empty($_POST['text'])) 
        {
            echo "Bitte gehen Sie <a href=\"javascript:history.back();\">
            zur&uuml;ck</a> und f&uuml;llen Sie alle Felder aus";
            // Fehlermeldung
        }    else // Wenn alles ausgefüllt ist, absenden
    {
        mail($Empfaenger, $name, $text, "From: "
        .$_POST['mail']);
    }

   


 }

wenn ich das so umbaue dann funktioniert weder das verschicken der Mail (kommt nichts an) und auch die Fehlermeldung kommt nicht an :-(

Verdammich..
 
Vermutlich, weil du nun die Mails an newuser@localhost schickst? Du müsstest dort zumindest wieder die korrekten Daten eintragen.
 
Werbung:
Das kann auch eine lokale Mailadresse sein, geht durchaus.

Schau mal in deine Logfiles, was dort zum Mailversand vermerkt wird.
 
Senden und Fehlermeldung gehen nun

Hallo, erstmal danke für eure Hilfe :-D

Ich habe es nun hinbekommen, dass die E-Mail versendet wird und wenn die Felder nicht ausgefüllt sind eine Fehlermeldung kommt, doch nun hab ich nur noch das Problem, dass die Inhalte der Felder (außer der Pflichfelder) nicht übertragen werden.

Das soll angeblich mit foreach gehen, doch das bekomme ich nicht hin.

Code:
<?php
    //Kopfzeile
    $header .= 'Von: newuser@localhost' . "\r\n";
    $header .= 'Für: [email protected]' . "\r\n";
    $header .= 'Betreff: Post von Ihrer Website' . "\r\n";


    //Emfänger
    $Empfaenger = "newuser@localhost";
    
    
    // Variablen der Datenfelder
    $name = $_POST["name"];
    $strasse = $_POST["strasse"];
    $ort = $_POST["ort"];
    $telefon = $_POST["telefon"];
    $mobil = $_POST["mobil"];
    $email = $_POST["mail"];
    $web = $_POST["web"];
    $text = $_POST["text"];
    
    
    if($_POST)
    {
        if(empty($_POST['name']) || empty($_POST['mail']) || empty($_POST['text']))
        {
            echo "Bitte gehen Sie <a href=\"javascript:history.back();\">
            zur&uuml;ck</a> und f&uuml;llen Sie alle Felder aus";
            // Fehlermeldung
        }
    }
    
    mail ($Empfaenger, $name, $text, "From: " .$header);
?>
 
Werbung:
Erledigt

Hat sich erledigt, hab es hinbekommen :-D

Hier zum schauen:

Code:
<?php
    //Kopfzeile
    $header .= 'Von: newuser@localhost' . "\r\n";
    $header .= 'Für: [email protected]' . "\r\n";
    $header .= 'Betreff: Post von Ihrer Website' . "\r\n";


    //Emfänger
    $Empfaenger = "newuser@localhost";
    
    
    // Variablen der Datenfelder
    $name = $_POST["name"];
    $strasse = $_POST["strasse"];
    $ort = $_POST["ort"];
    $telefon = $_POST["telefon"];
    $mobil = $_POST["mobil"];
    $email = $_POST["mail"];
    $web = $_POST["web"];
    $text = $_POST["text"];
    
    
    if($_POST)
    {    
        $strMailtext="";
        while (list($Formularfeld, $Wert) = each($_POST)) 
        {
            if ($Formularfeld!="submit")
            {
                $Mailnachricht .= $Formularfeld.": ".$Wert."/n";            
            }
            $strMailtext = "$name \n$strasse \n$ort \n$telefon \n$mobil \n$email \n$web \n$text";
         }

        if(empty($_POST['name']) || empty($_POST['mail']) || empty($_POST['text']))
        {
            echo "Bitte gehen Sie <a href=\"javascript:history.back();\">
            zur&uuml;ck</a> und f&uuml;llen Sie alle Felder aus";
            // Fehlermeldung
        }
    }
    
    mail ($Empfaenger, $name, $strMailtext, "From: " .$header);
?>
 
Zurück
Oben