filter_var() - filter_validate_email
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
adresse
code
domain
email
filter
funktion
header
hieb
http
jemand
norm
part
problem
quelle
spiel
spucke
umlaut
url
validierung
verstanden url
-
Hallo,
ich wollte mal wieder eine login-seite bauen da kam ich zum problem der überprüfung ob die anzumeldende emailadresse syntaktisch korrekt ist...
bisher bin ich das mit regex angegangen, aber obwohl es das beispiele zuhauf gibt fand ich leider kein wirklich korrektes muster das alle möglichen emailadressen erlaubt, meist bezüglich der mittlerweile 92 erlaubten sonderzeichen im domain-part.
nun habe ich die php-funktion filter_var() ausprobiert die mit den richtigen flags angeblich nach RFC konform ist... aber ich kriegs nicht hin - schon umlaute im domain-part werden geblockt.
darum meine frage:
wie beutze ich die funktion richtig ?
muss man erst nach punycode konvertieren ?
mein code dazu sieht so aus:
<?php if(filter_var($_POST['email'],FILTER_VALIDATE_EMAIL,FILTER_SANITIZE_EMAIL)!=$_POST['email']) { echo('ungültig'); } ?>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Das
steht für ganz andere Filter als eine EMail Adresse. Damit testest du EMail Header auf ihre Gültigkeit. (http://www.php.net/manual/de/function.filter-var.php#109542)FILTER_SANITIZE_EMAIL
if( filter_var($_POST['email'], FILTER_VALIDATE_EMAIL ) != $_POST['email'] ) { echo('ungültig'); }
reicht vollkommen. Dazu sei gesagt, dieser Weg des Validierens hat eine Schwäche: bei@spiel ist eine gültige EMail Adresse nach dieser Funktion (wenn das noch nicht behoben wurde)
Ich hoffe das hilft, liebe Grüße -
ggamee schrieb:
hmm das hab ich anders verstanden:
Das
steht für ganz andere Filter als eine EMail Adresse. Damit testest du EMail Header auf ihre Gültigkeit.FILTER_SANITIZE_EMAIL
http://www.w3schools.com/php/filter_sanitize_email.asp
ggamee schrieb:
wurde wohl behoben denn bei@spiel geht nicht durch wenn ichs teste.
bei@spiel ist eine gültige EMail Adresse nach dieser Funktion (wenn das noch nicht behoben wurde)
hat jemand denn vielleicht nen hieb- und stichfesten regex für alle möglichen emailadressen nach RFC-Norm? -
hcms schrieb:
ggamee schrieb:
hmm das hab ich anders verstanden:
Das
steht für ganz andere Filter als eine EMail Adresse. Damit testest du EMail Header auf ihre Gültigkeit.FILTER_SANITIZE_EMAIL
http://www.w3schools.com/php/filter_sanitize_email.asp
ggamee schrieb:
wurde wohl behoben denn bei@spiel geht nicht durch wenn ichs teste.
bei@spiel ist eine gültige EMail Adresse nach dieser Funktion (wenn das noch nicht behoben wurde)
hat jemand denn vielleicht nen hieb- und stichfesten regex für alle möglichen emailadressen nach RFC-Norm?
Ich rate dir: lass es bei dem was du hast. Das große Problem ist, dass das offizielle Regex welches alle möglichen eMailkonventionen einhält EXTREM lang ist. Und mit Extrem meine ich Extrem - als ich das vor einigen Monaten mal gelesen hatte, ist mir glatt die Spucke weggeblieben. Das was du da hast, müsste vollkommen reichen.
EDIT: Das hier ist das offizielle Regex für eMails:
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
Quelle: http://www.regular-expressions.info/email.html
Beitrag zuletzt geändert: 21.2.2013 13:00:47 von midwar -
Es gibt kein "offiziellen Regex" für E-Mail Adressen. Ebenso wenig für URLs.
Schau dir mal dies an: http://fightingforalostcause.net/misc/2006/compare-email-regex.php
Ich persönlich nutze diesen:
[!#\$%&\'\*\+\-\/0-9=\?a-z\^_`\{\}\|~]*(?:\\[\x00-\x7F][!#\$%&\'\*\+\-\/0-9=\?a-z\^_`\{\}\|~]*)*(?:\.[!#\$%&\'\*\+\-\/0-9=\?a-z\^_`\{\}\|~]*(?:\\[\x00-\x7F][!#\$%&\'\*\+\-\/0-9=\?a-z\^_`\{\}\|~]*)*)*@[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)*\.[a-z]{2,}
FILTER_VALIDATE_EMAIL ist schon okay. Wobei wir das Thema hier auch schon öfter hatten, z.B. hier.
Beitrag zuletzt geändert: 21.2.2013 22:49:29 von fabo -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage