Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
28.04.2005, 17:20
darkblade



hallo,
ich habe gerade ein php-script gecoded, aber es klappt noch net ganz. ich möchte gerne ein formular auswerten und dabei auch die email berücksichtigen. und zwar soll die email nur so wie halt ne richtige email geschrieben werden können. mit einem regulären ausdruck geht das so:

^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$

so sind auch subdomains erlaubt.
jetzt überprüfe ich das in meinem script folgendermaßen:

$preg = "[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})";
if (preg_match("/$preg/", $email))

usw. bei mir zeigt er dann aber nur die meldung an, die kommen soll, wenn die mail falsch ist, auch wenn sie richtig ist. woran liegt das? ich kann momentan nich mehr klar denken, weil ich zu lang jetzt schon code. vielen dank, wenn ihr euch allein schon die mühe macht das durchzulesen ;).
mfg und thx im voraus

--


Dieser Beitrag wurde am 28.04.2005 um 17:24 von darkblade bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
001
28.04.2005, 17:24
CN



das liegt evtl daran dass dein pattern falsch ist
was soll der punkt da überhaupt vor dem @

--


Dieser Beitrag wurde am 28.04.2005 um 17:25 von CN bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
002
28.04.2005, 17:31
darkblade



das * vor dem @ heißt, dass dort keines oder beliebig viele zeichen kommen können, da ja nicht jeder noch ein punkt hinter seinem namen hat, ich meine nicht jeder nennt sich: lol.lol@lol.de sonder viele auch nur: lol@lol.de
halt der klassische platzhalter ;)
mfg

--


Dieser Beitrag wurde am 28.04.2005 um 17:32 von darkblade bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
003
28.04.2005, 18:42
dp
Administrator


bei mir geht der ausdruck wie gewuenscht.

--

zum Seitenanfang zum Seitenende Profil || Suche
004
28.04.2005, 19:09
darkblade



hmm, ich habe gerade festgestellt das es nicht direkt am ausdruck liegt...
es ist irgendein anderer fehler im script.
mfg

--

zum Seitenanfang zum Seitenende Profil || Suche
005
28.04.2005, 19:18
darkblade



hat sich erledigt...
ich wusste doch, dass ich irgendeinen total dummen fehler gemacht habe...
ich habe $email anstatt $email1 verwendet, obwohl $email nicht exisitiert, wie kann es dann in der richtigen form geschrieben sein... ich könnte mich erschiessen :(
thx an euch alle
mfg

--

zum Seitenanfang zum Seitenende Profil || Suche
006
28.04.2005, 20:14
CN



darkblade.. ich weiss ja nicht wie ein punkt bei dir aussieht, bei mir ist "*" ein stern
mir gings eher darum:

Zitat:
^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$
Zitat:
ich meine nicht jeder nennt sich: lol.lol@lol.de sonder viele auch nur: lol@lol.de
verstehe ich nicht
wie wärs wenn du einfach den punkt zu den erlaubten zeichen vorm @ hinzufügst?
([_a-zA-Z0-9-] da noch den punkt rein)
wieso sollte man "lol" und "lol.lol" unterschiedlich behandeln?

--


Dieser Beitrag wurde am 28.04.2005 um 20:15 von CN bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
007
28.04.2005, 20:24
darkblade



hmm, habe ein weiteres problem (die häufen sich gerade...)
irgendwas stimmt an diesem script hier nicht:

$day = date("d");
$month = date("m");
$year = date("Y");
//Differenz zur Altersberechnung
$diff = $year - $gjahr;

if ($diff < 16)
{
echo '<font color="red">Hinweis.<br />';
}
else
{
if ($diff =< 16 AND $month > $gmonat)
{
$check_b_day == TRUE;
}
else
{
if ($diff =< 16 AND $month =< $gmonat AND $day > $gtag)
{
$check_b_day == TRUE;
}
}
}

if ($diff > 16)
{
$check_b_day == TRUE;
}

if ($check_b_day == TRUE)
{
echo "Du bist über sechzehn!...lol";
}

wäre nett, wenn ihr mir nochmal helfen könntet ;). kann sein, dass die operatoren =< nicht stimmen, die habe ich noch net benutzt, ich weiß net in welcher reihenfolge die kommen... aber daran liegt es auch nicht.
mfg

ps: sry CN

--


Dieser Beitrag wurde am 28.04.2005 um 20:24 von darkblade bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
008
28.04.2005, 20:27
CN



das heisst <= nicht =<, sowas steht in den meisten büchern :P
btw würde ich das so nicht prüfen, jemand der am 31.12.1980 geboren wäre, wäre am 1.1.1996 nach deinem programm 16 stimmt doch nicht, hab deinen komischen hack übersehen, so würde ich das aber trotzdem nicht machen

zusätzlich solltest du vielleicht sagen was da heist dass es nicht geht
ich seh da nirgends ne fehlermeldung in deinem post, nen php interpreter hab ich auch nich im kopf der das jetzt prüft

if($var == true) ist überflüssig, da reicht if($var)
$check_b_day == TRUE; macht keinen sinn, == vergleicht nur, du willst wahrscheinlich was zuweisen (=)

--


Dieser Beitrag wurde am 28.04.2005 um 20:32 von CN bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
009
28.04.2005, 20:38
darkblade



wahrscheinlich geht's deswegen net... danke, du musst aber wissen, ich bin ein einsteiger.. ich lese gerade ein buch über php um es richtig zu lernen, aber nur lesen bringt's nicht richtig, deswegen mach ich auch den ein oder anderen script ;)

mfg

--

zum Seitenanfang zum Seitenende Profil || Suche
010
28.04.2005, 22:26
dp
Administrator


Zitat:
CN postete
darkblade.. ich weiss ja nicht wie ein punkt bei dir aussieht, bei mir ist "*" ein stern
mir gings eher darum:
Zitat:
^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$
Zitat:
ich meine nicht jeder nennt sich: lol.lol@lol.de sonder viele auch nur: lol@lol.de
verstehe ich nicht
wie wärs wenn du einfach den punkt zu den erlaubten zeichen vorm @ hinzufügst?
([_a-zA-Z0-9-] da noch den punkt rein)
wieso sollte man "lol" und "lol.lol" unterschiedlich behandeln?
wuerde man den punkt mit aufnehmen, waere auch foo....@bar.org oder foo.@bar.org moeglich. das moechte man offenbar vermeiden.

--

zum Seitenanfang zum Seitenende Profil || Suche
011
29.04.2005, 13:03
darkblade



hallo dp,
dén regulären ausdruck habe ich aus meinem php-buch, das von einem (wohl ;) ) profi geschrieben wurde. deswegen wird es wohl richtig sein...

mfg

--

zum Seitenanfang zum Seitenende Profil || Suche
012
30.04.2005, 13:11
theDon



IMHO ist es sinnvoller, nur kleinbuchstaben in die RegEx zu packen und das ganze case-insensitiv zu matchen (Modifier `i'). Das duerfte etwas schneller sein.

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
013
30.04.2005, 15:57
Chronial



Geschwindigkeit ist nicht wirklich entscheident, aber es macht den Code übersichtlicher.

Und ich würde einfach mal grundsätzlich am "Profitum" von Leuten, die Coding-Bücher schreiben zweifeln - die Erfahrung hat mich da nämlich eines Besseren belehrt.

So erkennt auch der Regexp bei weitem nicht alle gültigen E-mailadressen.
Mister...Punkt@example.com ist nämlich auch eine gültige E-mailadresse. Dein Script wird die aber ablehnen.

Wen es interessiert, das ist meine RegExp zum E-Mail check. Check eigentlich auf alles, was man checken kann. Auch auf gültige TDL - allerdings kann man sich um einen solchen Check durchaus streiten, da sich die TDLs ändern können, und dann das Script gültige E-mailadressen ablehnt, was auf keinen Fall passieren sollte.
Quellcode:/^[-_.[:alnum:]]+@
(
(([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+
(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|
  ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|
  ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|
  de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|
  ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|
  hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|
  ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|
  ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|
  na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|
  pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|
  sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|
  tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|
  va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)
|
(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}
([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])
)$/ix
[:alnum:] innerhalb von [ ] entspricht 0-9a-zA-Z

--

"tsuji-giri" (japanisch) - ein neues Schwert an einem Passanten ausprobieren


Dieser Beitrag wurde am 30.04.2005 um 16:03 von Chronial bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
014
30.04.2005, 17:14
oxff



IP Adressen sind an sich nicht so standardkonform für eine eMail Adresse, schlieszlich wird ja die eMail nicht an den A-Eintrag der DNS hinter dem @ geschickt sondern an den MX-Eintrag, das macht also durchaus Sinn. (edit: Mein Post dafür nicht..)

--

mwcollect - mein Projekt | oxlog - mein blog | happyhardcore.com Stream - gute Musik


Dieser Beitrag wurde am 30.04.2005 um 17:14 von 0xFF bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche