Re: com web/php: Adapts the validation to use filter_var: include/email-validation.inc

From: Date: Tue, 12 Sep 2017 06:38:24 +0000
Subject: Re: com web/php: Adapts the validation to use filter_var: include/email-validation.inc
References: 1  Groups: php.webmaster 
Request: Send a blank email to php-webmaster+get-26382@lists.php.net to get a copy of this message
Hi Christoph, I just noticed it and wondering whether usage of filter_var() is safe here. Either I forgot about something or not all of the PHP.net mirrors are running 5.4+ so far... Cheers, Maciej. W dniu 17.08.2017 o 18:44, Christoph Michael Becker pisze:
Commit:    7be864b190c1953c51622893a27a43fc7645c0fa
Author:    Andreas Heigl <andreas@heigl.org>         Thu, 17 Aug 2017 18:44:27 +0200
Parents: c716ac3b05262660372bd0af199aec78c140f3ab Branches: master
Link:       http://git.php.net/?p=web/php.git;a=commitdiff;h=7be864b190c1953c51622893a27a43fc7645c0fa
Log: Adapts the validation to use filter_var Everything else is then simply refinement Changed paths: M include/email-validation.inc Diff: diff --git a/include/email-validation.inc b/include/email-validation.inc index 05b964b..c5b1ca5 100644 --- a/include/email-validation.inc +++ b/include/email-validation.inc @@ -12,30 +12,25 @@ function clean_AntiSPAM($email) // Try to check that this email address is valid function is_emailable_address($email) {
+    $email = filter_var($email, FILTER_VALIDATE_EMAIL);
     // No email, no validation
-    if (empty($email)) {
-        return false;
-    }
-
-    $parts = explode('@', $email);
-    // An email-address with more than one '@' can't be valid
-    if (count($parts) != 2) {
+    if (! $email) {
         return false;
     }
+    $host = substr($email, strrpos($email, '@') + 1);
     // addresses from our mailing-list servers
-    $host_part_regex = "!(lists\.php\.net|chek[^\.*]\.com)!i";
-    if (preg_match($host_part_regex, $email)) {
+    $host_regex = "!(lists\.php\.net|chek[^\.*]\.com)!i";
+    if (preg_match($host_regex, $host)) {
         return false;
     }
     // When no MX-Entry can be found it's for sure not a valid email-address.
-    if (getmxrr($parts[1], $return_values) === false) {
+    if (getmxrr($host, $return_values) === false) {
         return false;
     }
-    $address_part_regex = ":^([-!#$%&'*+./0-9=?A-Z^_`a-z{|}~ ])+:i";
-    return (bool) preg_match($address_part_regex, $parts[0]);
+    return true;
} /**


« previous php.webmaster (#26382) next »