Mailformular geht noch immer nicht richtig.

bamy

Grünschnabel
Hier bin ich nochmal mit meinem 'super' formular..

jetzt geht die abschickfunktion, doch die Idee war, dass gewisse Felder Pflichtfelder sind und unausgefüllt eine Meldung zurückgeben.
momentan gibts sogar wenn das Formular leer ist die Meldung 'vielen Dank für die Anfrage' doch es wird nicht abgeschickt. das ist irgendwie blöd :/

wenn mir jemand dabei helfen könnte, wär ich sehr dankbar.

lg
bamy
PHP:
<?php
if($_POST['email'] != '' && $_POST['name'] != '')
{
	function check_email($email) {
	    if(!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {
		return false;
	    }
	    $email_array = explode("@", $email);
	    $local_array = explode(".", $email_array[0]);
	    for ($i = 0; $i < sizeof($local_array); $i++) {
		if(!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$", $local_array[$i])) {
		    return false;
		}
	    }
	    if(!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) {
		$domain_array = explode(".", $email_array[1]);
		if(sizeof($domain_array) < 2) {
		    return false;
		}
		for($i = 0; $i < sizeof($domain_array); $i++) {
		    if(!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$", $domain_array[$i])) {
			return false;
		    }
		}
	    }
	    return true;
	} 

	$to = 'deine@mailadresse.ch';

	if(check_email($_POST['email']) == false)
	{
		//keine korrekte mailadresse
	}
	else
	{
		$from = $_POST['email'];
	}

	$subject = 'Anfrage von Webseite';

	$body = $_POST['kommentar']."
	Telefonnummer: ".$_POST['telefon']."
	E-Mailadresse: ".$_POST['email'];

	mail($to,$subject,$body,"Reply-To: ".$_POST['email']."\r\nFROM: ".$_POST['email']);
}
else
{
?>
<form action="action.php" method="post">
 <p>Ihr Name: <input type="text" name="name" value="<?php echo $_POST['name']; ?>"/></p>
 <p>Ihre Mailadresse: <input type="text" name="email" value="<?php echo $_POST['email']; ?>"/></p>
 <p>Ihre Telefonnummer: <input type="text" name="telefon" value="<?php echo $_POST['telefon']; ?>"/></p>
 <p>Ihre Mitteilung: <textarea name="kommentar" /><?php echo $_POST['kommentar']; ?></textarea></p>
 <p><input type="submit" /></p>
</form>
<?php	
}
?>
Vielen Dank für Ihre Anfrage.
 
Zuletzt bearbeitet von einem Moderator:
Hi

nimm die letzte Zeile
PHP:
Vielen Dank für Ihre Anfrage.
raus und schreib dafür direkt nach dem mail(...);
PHP:
echo 'Vielen Dank für Ihre Anfrage.';

Gruß
 
ja, das geht nun, danke. aber warum wird es verschickt auch wenn ich keine korreckte E-Mailadresse eingegeben habe?

bzw: es sollte eigentlich raus schreiben: 'keine korrekte mailadresse'

Dies sollte also ein Muss-Feld sein.
 
if(check_email($_POST['email']) == false)
{
//keine korrekte mailadresse
}

Dann musst du da entsprechend eine fehlermeldung ausgeben.
 
sowas**** :

# Kein Name eingegeben
$err[1] = '<br />- Ungültiger Name';

# Ungültige E-Mailadresse eingegeben
$err[2] = '<br />- Ungültiger E-Mailadresse';
 
Ein einfaches echo reicht.
Und dann sollte auch Schluss sein mit dem Senden.
Also statt
PHP:
    if(check_email($_POST['email']) == false)
    {
        //keine korrekte mailadresse
    }
    else
    {
        $from = $_POST['email'];
    }

    $subject = 'Anfrage von Webseite';

    $body = $_POST['kommentar']."
    Telefonnummer: ".$_POST['telefon']."
    E-Mailadresse: ".$_POST['email'];

    mail($to,$subject,$body,"Reply-To: ".$_POST['email']."\r\nFROM: ".$_POST['email']);
das:
PHP:
    if(check_email($_POST['email']) == false)
    {
        echo 'Keine korrekte Mailadresse.';
    }
    else
    {
        $from = $_POST['email'];
        $subject = 'Anfrage von Webseite';

        $body = $_POST['kommentar'].
        "Telefonnummer: ".$_POST['telefon'].
        "E-Mailadresse: ".$_POST['email'];

        mail($to,$subject,$body,"Reply-To: ".$from."\r\nFROM: ".$from);
    }
Hab noch zwei andere Sachen in dem Teil ausgebessert.
Der Programmierer scheint selbst nicht viel Ahnung zu haben, was er da gemacht hat.
 
Gefährlich ist auch noch die mögliche header injection... $from wird nicht nach möglichen zeilenumbrüchen escapet.
 
Eigentlich dachte ich, er hat schon Ahnung.. aber da ich selber keine Ahnung habe, hab ichs nicht bemerkt. :/

danke, ich werde das testen :)
 
Gefährlich ist auch noch die mögliche header injection... $from wird nicht nach möglichen zeilenumbrüchen escapet.
--> das hab ich nicht verstanden, sorry
 
hey.. jetzt geht gar nix mehr...

hey, danke für eure Hilfe, aber ich werde es nicht hinbekommen.. nix für ungut.
 
Zurück