diff --git a/_build/config.json b/_build/config.json index 1f9724aa..37e93575 100644 --- a/_build/config.json +++ b/_build/config.json @@ -3,7 +3,7 @@ "lowCaseName": "login", "description": "Login and Registrations", "author": "Jason Coward & Shaun McCormick", - "version": "1.9.8-pl2", + "version": "1.9.9", "package": { "elements": { "snippets": [ diff --git a/_packages/login-1.9.9-pl.transport.zip b/_packages/login-1.9.9-pl.transport.zip new file mode 100644 index 00000000..87ab6692 Binary files /dev/null and b/_packages/login-1.9.9-pl.transport.zip differ diff --git a/core/components/login/docs/changelog.md b/core/components/login/docs/changelog.md index 58683787..9044f72d 100755 --- a/core/components/login/docs/changelog.md +++ b/core/components/login/docs/changelog.md @@ -1,6 +1,10 @@ Changelog for Login =================== +Login 1.9.9 +------------------------------------ +- Fix validate email addresses in Register [#143] + Login 1.9.8 ------------------------------------ - Allow persistParams when redirectUnsetDefaultParams is true [#157] diff --git a/core/components/login/model/login/loginvalidator.class.php b/core/components/login/model/login/loginvalidator.class.php index 486ad280..56c04955 100644 --- a/core/components/login/model/login/loginvalidator.class.php +++ b/core/components/login/model/login/loginvalidator.class.php @@ -394,52 +394,27 @@ public function password_confirm($key,$value,$param = 'password_confirm') { */ public function email($key,$value) { /* allow empty emails, :required should be used to prevent blank field */ - if (empty($value)) return true; + if (empty($value)) { + return true; + } - /* validate length and @ */ - $pattern = "^[^@]{1,64}\@[^\@]{1,255}$"; - $condition = $this->config['use_multibyte'] ? @mb_ereg($pattern, $value) : @preg_match('#' . preg_quote($pattern, '#') . '#', $value); - if (!$condition) { - return $this->_getErrorMessage($key,'vTextEmailInvalid','register.email_invalid',array( + /* validate email with filter_var */ + if ((filter_var($value, FILTER_VALIDATE_EMAIL) === false) || (strlen($value) > 99)) { + return $this->_getErrorMessage($key, 'vTextEmailInvalid', 'register.email_invalid', array( 'field' => $key, 'value' => $value, )); } + /* validate domain with filter_var */ $email_array = explode("@", $value); - $local_array = explode(".", $email_array[0]); - for ($i = 0; $i < sizeof($local_array); $i++) { - $pattern = "^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$"; - $condition = $this->config['use_multibyte'] ? @mb_ereg($pattern, $local_array[$i]) : @preg_match('#' . preg_quote($pattern, '#') . '#', $local_array[$i]); - if (!$condition) { - return $this->_getErrorMessage($key,'vTextEmailInvalid','register.email_invalid',array( - 'field' => $key, - 'value' => $value, - )); - } - } - /* validate domain */ - $pattern = "^\[?[0-9\.]+\]?$"; - $condition = $this->config['use_multibyte'] ? @mb_ereg($pattern, $email_array[1]) : @preg_match('#' . preg_quote($pattern, '#') . '#', $email_array[1]); - if (!$condition) { - $domain_array = explode(".", $email_array[1]); - if (sizeof($domain_array) < 2) { - return $this->_getErrorMessage($key,'vTextEmailInvalidDomain','register.email_invalid_domain',array( - 'field' => $key, - 'value' => $value, - )); - } - for ($i = 0; $i < sizeof($domain_array); $i++) { - $pattern = "^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$"; - $condition = $this->config['use_multibyte'] ? @mb_ereg($pattern, $domain_array[$i]) : @preg_match('#' . preg_quote($pattern, '#') . '#', $domain_array[$i]); - if (!$condition) { - return $this->_getErrorMessage($key,'vTextEmailInvalidDomain','register.email_invalid_domain',array( - 'field' => $key, - 'value' => $value, - )); - } - } + if (!isset($email_array[1]) || (filter_var($email_array[1], FILTER_VALIDATE_DOMAIN) === false)) { + return $this->_getErrorMessage($key, 'vTextEmailInvalidDomain', 'register.email_invalid_domain', array( + 'field' => $key, + 'value' => $value, + )); } + return true; }