• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Formularfelder überprüfen

S

Sabine Nenz

Guest
ich habe ein Formular, welches vor dem Absenden gecheckt werden muss.

Das Problem ist, dass es 5 E-Mail Felder gibt, wovon nur 1 ausgefüllt werden MUSS.
Dann soll überprüft werden, ob sich in den Feldern, welche ausgefüllt wurden eine gültige E-Mail Adresse befindet.
Und dann soll noch geprüft werden, dass keine E-Mail Adresse doppelt eingetragen wurde.

Zur Zeit habe ich das so gemacht:

if (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$email1)) {
echo "Bitte gib eine gültige E-Mail Adresse an! <a href='javascript:history.back()'>Zurück zum Forumlar</a>";
exit;

Vieleicht könnt ihr mir ja weiterhelfen :)
 
Wo is das Problem?

if ($email1) alles_ok = true;
if ($email2) alles_ok = true;
if ($email3) alles_ok = true;
if ($email4) alles_ok = true;
if ($email5) alles_ok = true;

if ($email1 && !eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$email1)) alles_ok = false;
if ($email2 && !eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$email2)) alles_ok = false;
if ($email3 && !eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$email3)) alles_ok = false;
if ($email4 && !eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$email4)) alles_ok = false;
if ($email5 && !eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$email5)) alles_ok = false;

if (($email1 == $email2) || ($email1 == $email3) || ($email1 == $email4) || ($email1 == $email5)) alles_ok = false;
if (($email2 == $email1) || ($email2 == $email3) || ($email2 == $email4) || ($email2== $email5)) alles_ok = false;
if (($email3 == $email1) || ($email3 == $email2) || ($email3 == $email4) || ($email3== $email5)) alles_ok = false;
if (($email4 == $email1) || ($email4 == $email2) || ($email4 == $email3) || ($email4== $email5)) alles_ok = false;
if (($email5 == $email1) || ($email5 == $email2) || ($email5 == $email3) || ($email5== $email4) alles_ok = false;


if (!alles_ok) {
echo "Das is so nich gut! <a href='javascript:history.back()'>Zurück zum Forumlar</a>";
exit;
}
 
Hi Sabine,

dein Fehler liegt bei "a-z-" in deinen eregs. Es muß "[...a-z\-]" heissen, da das minus in den klammern ein Befehlszeichen ist (genauso wie "+","." usw.

CU
MichiS
 
Hi,

Probier mal folgendes Script:

<?
if (!$email1 && !$email2 && !$email3 && !$email4 && !$email5)
{
?>
<form action="<? PHP_SELF; ?>" method="post">
Email 1: <input type="text" name="email1">
<br>
Email 2: <input type="text" name="email2">
<br>
Email 3: <input type="text" name="email3">
<br>
Email 4: <input type="text" name="email4">
<br>
Email 5: <input type="text" name="email5">
<br>
<input type="submit" value="Check">
</form>
<?
}
elseif ($email1)
{
if (!ereg ("^([-!#\$%&'*+./0-9=?A-Z^_`a-z{|}~ ])+@([-!#\$%&'*+/0-9=?A-Z^_`a-z{|}~ ]+\\.)+[a-zA-Z]{2,4}\$", $email1))
{
$ok="nein";
$email="1";
}
else $ok="ja";
}
elseif ($email2)
{
if (!ereg ("^([-!#\$%&'*+./0-9=?A-Z^_`a-z{|}~ ])+@([-!#\$%&'*+/0-9=?A-Z^_`a-z{|}~ ]+\\.)+[a-zA-Z]{2,4}\$", $email2))
{
$ok="nein";
$email="2";
}
else $ok="ja";
}
elseif ($email3)
{
if (!ereg ("^([-!#\$%&'*+./0-9=?A-Z^_`a-z{|}~ ])+@([-!#\$%&'*+/0-9=?A-Z^_`a-z{|}~ ]+\\.)+[a-zA-Z]{2,4}\$", $email3))
{
$ok="nein";
$email="3";
}
else $ok="ja";
}
elseif ($email4)
{
if (!ereg ("^([-!#\$%&'*+./0-9=?A-Z^_`a-z{|}~ ])+@([-!#\$%&'*+/0-9=?A-Z^_`a-z{|}~ ]+\\.)+[a-zA-Z]{2,4}\$", $email4))
{
$ok="nein";
$email="4";
}
else $ok="ja";
}
elseif ($email5)
{
if (!ereg ("^([-!#\$%&'*+./0-9=?A-Z^_`a-z{|}~ ])+@([-!#\$%&'*+/0-9=?A-Z^_`a-z{|}~ ]+\\.)+[a-zA-Z]{2,4}\$", $email5))
{
$ok="nein";
$email="5";
}
else $ok="ja";
}
if ($ok=="nein")
{
echo "Bitte geben Sie eine richtige E-Mailadresse in das Feld Email $email ein!<br><a href=\"javascript:history.back()\">zurück</a>";
}
if ($ok=="ja")
{
echo "Richtig";
}
?>

Wenn es da Probleme gibt, dann poste einfach mal.

cya
 
kann mir jemand für anfänger kurz erklären was da genau geprüft wird?

ereg?

stimmt das:?

alle diese zeichen sind erlaubt:
("^([-!#\$%&'*+./0-9=?A-Z^_`a-z{|}~ ])

dann muss aber ein @ kommen
@

und dann noch der domain:
])+@([-!#\$%&'*+/0-9=?A-Z^_`a-z{|}~ ]+\\.)+[a-zA-Z]{2,4}\$", $email4))


???

so stell ich mir das vor.... !?

danke

toto
 
danke an euch Jungs, für eure Bereitschaft!
Es gibt jedoch ein Problem...das Script von Gero hat einen Error und das von Shadowsmaster funzt nicht...:(
 
hi shadowsmaster,

na dann trag mal nichts in die felder ein...wird dann trotzdem verschickt :(
 
Und nur so nebenbei, du hast doch geschrieben, dass nu mindestens ein Feld ausgefüllt sein muss. Wenn keins ausgefüllt ist, dann soll doch auch nichts verschickt werden, oder?
 
danke an alle poster!

Nocheinmal mein Problem:

1.)
es gibt sagen wir mal 3 Felder-Paare, also 6 Felder. 1 Felder-Paar muss komplett ausgefüllt werden, also 1. Feld muss nur geprüft werden, ob da auch etwas drinsteht, aber das 2. Feld muss immer eine E-Mail Adresse beeinhalten.

2.)
Wenn nun zusätzlich zu dem ersten Felder-Paar (welches Pflicht ist), noch ein zweites angefangen wird, also nur eines Feld des paares eine Mail Adresse eingetragen wird, muss gleichzeitig auch das 1.Feld ausgefüllt werden.
Im Klartext: Es muss immer ein Felder-Paar komplett ausgefüllt werden, dass 2. mit einer E-MAil Adresse, das 1.muss nur irgendetwas drinstehen.

3.)
es soll geprüft werden, ob sich keine e-mail adresse, doppelt in den evtl. noch zusätzlich ausgefüllten feldern befinden.
Also, mal angenommen es werden die Felder-Paare 1 und 2 komplett ausgefüllt, dann muss jeweils das 2. Feld eines jeden Paares untereinander überprüft werden (da sich da die E-Mail Adresse befindet), damit keine e-mail adresse doppelt vorkommt. jedoch dürfen nur die felder geprüft werden, welche auch ausgefüllt wurden.

Ich weiß, dass ist verdammt kompliziert, da es ja nicht alles pflichtfelder sind - aber vieleicht weiß ja einer von euch experten rat :):):)
 
Probiers mal damit:

<?
if (!$text1 && !$email1)
{
?>
<form action="<? PHP_SELF; ?>" method="post">
Text 1: <input type="text" name="text1">
<br>
Email 1: <input type="text" name="email1">
<br><br>
Text 2: <input type="text" name="text2">
<br>
Email 2: <input type="text" name="email2">
<br>
<input type="submit" value="Check">
</form>
<?
}
if ($text1 && $email1)
{
if (!ereg ("^([-!#\$%&'*+./0-9=?A-Z^_`a-z{|}~ ])+@([-!#\$%&'*+/0-9=?A-Z^_`a-z{|}~ ]+\\.)+[a-zA-Z]{2,4}\$", $email1))
{
$ok="nein";
$email="1";
}
else
{
$ok="ja";
$ok1="ja";
}
}
if ($text1 && $email1 && $text2 && $email2)
{
if (!ereg ("^([-!#\$%&'*+./0-9=?A-Z^_`a-z{|}~ ])+@([-!#\$%&'*+/0-9=?A-Z^_`a-z{|}~ ]+\\.)+[a-zA-Z]{2,4}\$", $email1))
{
$ok="nein";
$email="1";
}
else
{
$ok2="ja";
}
if ($ok2=="ja" && (ereg ("^([-!#\$%&'*+./0-9=?A-Z^_`a-z{|}~ ])+@([-!#\$%&'*+/0-9=?A-Z^_`a-z{|}~ ]+\\.)+[a-zA-Z]{2,4}\$", $email2)))
{
$ok3="ja";
}
else
{
$ok="nein";
$email="2";
}
}
if (($text1 && $email1) && ($text2 || $email2)) $ok="";
if ($ok=="nein") echo "Bitte geben Sie eine richtige E-Mailadresse in das Feld Email $email ein!<br>";
if (($ok=="ja" && $ok1=="ja") || ($ok1=="ja" && $ok3=="ja")) echo "RICHTIG";
if (!$text1 || !$email1) echo "Bitte füllen Sie beim 1. Felderpaar beide Felder aus!<br>";
if ($text2 || $email2)
{
if ($email2==$email1) echo "Bitte geben Sie in das Feld E-Mail 1 einen anderen Wert ein, als in das Feld E-Mail 2!<br>";
if (!$text2 || !$email2) echo "Bitte füllen Sie entweder nur das 1. Felderpaar, oder beim 2. Felderpaar auch beide Felder aus!<br>";
}
?>

cya
 
Zuletzt bearbeitet:
*freu*

Super, Shadowsmaster, wirklich cool!
Was muss ich alles ändern, wenn ich mehr Felder habe, also z.B. 5?
 
Wenn ich mal Zeit hab, dann kann ich dir so ein Script für 5 Felderpaare schreiben. Aber jetz kann ich grad ned. Und ausserdem kann ich PHP auch noch ned so gut *g* (also viel herumprobieren). Wäre gut, wenn jemand ein besseres Script hätte.
 
Zurück
Oben