Hallo,
ich brauch da etwas Hilfestellung beim Erstellen eines Formmailers mit Fehlerüberprüfung.
Solange ich keine extra Funktionen einsetze und nur auf einen Fehler prüfe, klappt alles einwandfrei.
Da es aber mehrere Prüfverfahren geben sollte, wie z.B. ob ein Feld leer ist, wollte ich die Prüfung in eine Funktion schreiben.
Leider klappt das Ganze nicht so wie ich es wollte. Auch wenn Fehler vorhanden sind, werden diese einfach ignoriert und das Formular versendet.
Falls jemand einen Rat hat, wäre ich sehr dankbar.
Danke im Voraus.
ich brauch da etwas Hilfestellung beim Erstellen eines Formmailers mit Fehlerüberprüfung.
Solange ich keine extra Funktionen einsetze und nur auf einen Fehler prüfe, klappt alles einwandfrei.
PHP-Code:
<?php
if($action == "")
{
echo $form; // Es wird ein Formular eingefügt, das ausgefüllt und versendet werden kann
}
else // wenn auf absenden geklick wurde, kommt man hierhin
{
// Emailadresse prüfen
if(!ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,3})$", $semail))
{
echo "Email ungültig.<br>";
echo $form; // Formular nochmals darstellen
}
else // Wenn Email OK, dann versenden
{
mail("$recipient","$subject", "$message","FROM:$sname <$semail>");
}
}
?>
PHP-Code:
<?php
if($action == "")
{
echo $form; // Es wird ein Formular eingefügt
}
else
{
check_form($_POST); // Formularfelder überprüfen
if($errors) // Wenn Fehler vorhanden, dann diese Ausgeben
{
show_errors($errors);
echo $form;
}
else // Keine Fehler, dann versenden
{
mail("$recipient","$subject", "$message","FROM:$sname <$semail>");
}
}
function check_form($POST)
{
$errors = array();
// Eingegebene Emailadresse prüfen
if(!ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,3})$", $semail))
{
$errors[] = "Email ungültig";
}
// Eingegebenen Namen prüfen
if(sname == "")
{
$errors[] = "Keinen Namen angegeben";
}
return $errors;
}
function show_errors($errors)
{
foreach ($errors as $temp)
{ echo $temp."<br>"; }
}
?>
Falls jemand einen Rat hat, wäre ich sehr dankbar.
Danke im Voraus.
Kommentar