Bug #50431 [Com]: Using filter_var to filter an email address returns incorrect result

From: Date: Mon, 20 Dec 2010 01:02:30 +0000
Subject: Bug #50431 [Com]: Using filter_var to filter an email address returns incorrect result
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-157100@lists.php.net to get a copy of this message
Edit report at http://bugs.php.net/bug.php?id=50431&edit=1 ID: 50431 Comment by: vaughan dot montgomery at gmail dot com Reported by: troy at scriptedmotion dot com Summary: Using filter_var to filter an email address returns incorrect result Status: Bogus Type: Bug Package: Filter related Operating System: Ubuntu PHP Version: 5.2.11 Block user comment: N Private report: N New Comment: ok you say that's a valid email.. but in a working user environment, using this filter to VALIDATE an email address is unworkable. when users register on my site, i want to validate their email address. if the user enters test@test, it returns as valid. but how on earth does my server know that the users email address .com/.net/.co.uk/.biz etc. so when it tries to send the user an email to validate his email address in order to register on my site, he never receives the email because the server doesn't know where to send it. this means i can't use this filter for its intended purpose of validating an email address. back to using regex and the old PHP 4 methods. either make the filter return as invalid, or add an extra parameter to tell it to validate with a top level domain. ie. filter_var('T@TEST', FILTER_VALIDATE_EMAIL, FILTER_FLAG_TOP_LEVEL) if FILTER_FLAG_TOP_LEVEL is set, then 'test@test' returns invalid, if not, then return valid. problem solved, and i'm sure many users would apreciate it. Previous Comments: ------------------------------------------------------------------------ [2010-08-20 16:53:27] michael at squiloople dot com The standards are actually RFC 5321 and 5322, and according to RFC 5321 (which goes into more specific detail over domain names in email addresses), "in the case of a top-level domain used by itself in an email address, a single string is used without any dots." ------------------------------------------------------------------------ [2010-05-08 02:32:01] office at lucian0308 dot com i see a deference the standard is http://tools.ietf.org/html/rfc2822 this function respect the standard? because PEAR http://pear.php.net/manual/en/package.validate.validate.email.php say that use RFC2822 and it works corectly without dot and level domain shoud be a false email. ------------------------------------------------------------------------ [2009-12-09 19:02:01] rasmus@php.net That's a valid email address. Email addresses don't need a tld. Try emailing root@localhost, for example. Any locally defined host can potentially receive email. ------------------------------------------------------------------------ [2009-12-09 18:59:19] troy at scriptedmotion dot com Description: ------------ Using filter_var to filter a string containing an email address with no top level domain returns the string instead of false. For example: filter_var('t@1', FILTER_VALIDATE_EMAIL); returns 't@1' instead of false. Reproduce code: --------------- filter_var('t@1', FILTER_VALIDATE_EMAIL); // returns 't@1' instead of false. Expected result: ---------------- false Actual result: -------------- "t@1" // a string ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=50431&edit=1

« previous php.bugs (#157100) next »