Mail Formular

HughMordhand

Grünschnabel
Hallo Leute,

ist mein erster Post also erst einmal ein herzliches *winke winke*.

Ich bin noch nicht soooo PHP bewandert, aber habe mir einmal ein Forumlar gebastelt bei dem die Felder geprüft werden sollen.
Mit einem Feld klappt das auch wunderbar aber mit zwei Feldern leider nicht mehr.

Ich prüfe so:
PHP:
function check_emailsyntax_empfaenger($empfaenger) { 
if (eregi("^(|\-|\.)+@((|\-)+\.)+{2,4}\$",$empfaenger)==1) { 
return true; 
} else { 
return $fehler1; 
} 
} 

function check_emailsyntax_sender($sender) { 
if (eregi("^(|\-|\.)+@((|\-)+\.)+{2,4}\$",$sender)==1) { 
return true; 
} else { 
return $fehler2; 
} 
}

und frage dann den Fehler so ab:
PHP:
if($fehler1 !== true){
 
    $send = @mail($empfaenger, $betreff, $nachricht, $headers); 
    if($send)   
    {   
    echo $nachrichtok = "Dein Beitrag wurde versendet!"; 
    }   
    else   
    {   
    echo $nachrichtnok = "Du hast noch nichts eingetragen </br>oder deine Eingaben waren nicht korrekt!";   
    }   
}

So funktioniert das auch noch, wenn ich dann allerdings die zweite Fehlerprüfung mit ins Boot holen will,also so:
PHP:
if($fehler1 AND $fehler2 !== true){
 
    $send = @mail($empfaenger, $betreff, $nachricht, $headers); 
    if($send)   
    {   
    echo $nachrichtok = "Dein Beitrag wurde versendet!"; 
    }   
    else   
    {   
    echo $nachrichtnok = "Du hast noch nichts eingetragen </br>oder deine Eingaben waren nicht korrekt!";   
    }   
}
, klappt es nicht mehr.

Ich habe es auch schon mit zwei Schleifen und einer verschachtelten if Schleife versucht, aber beide bringen kein Resultat.

Ich hoffe ihr könnt mir helfen.

Danke & Grüße
 
Also bei dir ist das falsch:

PHP:
if($fehler1 AND $fehler2 !== true){
es muss :

PHP:
if($fehler1 !== true AND $fehler2 !== true){

Aber generell in den funktionen werden Variablen zurückgegeben die nicht gesetzt werden.Besser noch währe eine Funktion für beide machen (die patterns sehen auch seltsam aus?):

PHP:
function check_mail($mail) { 
 return eregi("^(|\-|\.)+@((|\-)+\.)+{2,4}\$",$mail);
} 

if(check_mail($sender) && check_mail($empfaenger)){
 
    $send = @mail($empfaenger, $betreff, $nachricht, $headers); 
    if($send)   
    {   
    echo $nachrichtok = "Dein Beitrag wurde versendet!"; 
    }   
    else   
    {   
    echo $nachrichtnok = "Du hast noch nichts eingetragen </br>oder deine Eingaben waren nicht korrekt!";   
    }   
}
 
Danke für deine Hilfe, deine Funktion erscheint mir plausibel, allerdings gibt er jetzt keine Meldung mehr aus und verschickt auch nichts mehr.
Auch meine Lösung mit der Fehlerbeseitigung von dir funktioniert nicht, er schickt immer noch die Nachricht weg, auch wenn kein Absender eingetragen ist.
 
Entferne mal das @ vor mail().

Das Unterdrücken von Fehlermeldungen auf diese Weise ist nicht produktiv und erschwert nur das Entwickeln bzw. Finden von möglichen Fehlerquellen.

Man sollte eher [phpf]error_reporting[/phpf] einstellen, entweder auf 0, für die "Live" Umgebung bzw. auf E_ALL für das Entwickeln bzw. finden von Fehlern.
 
Zurück