Fix for #48: Mail adresses are accepted in a broader range.

This commit is contained in:
azett 2019-12-25 22:40:11 +01:00
parent 23c4c33ee1
commit a9eeb2f408

View File

@ -1,9 +1,9 @@
<?php <?php
/** /**
* Project: SmartyValidate: Form Validator for the Smarty Template Engine * Project: SmartyValidate: Form Validator for the Smarty Template Engine
* File: validate_criteria.isEmail.php * File: validate_criteria.isEmail.php
* Author: Monte Ohrt <monte at newdigitalgroup dot com> * Author: Monte Ohrt <monte at newdigitalgroup dot com>
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -12,12 +12,12 @@
* *
* This library is distributed in the hope that it will be useful, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software * License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* *
* @link http://www.phpinsider.com/php/code/SmartyValidate/ * @link http://www.phpinsider.com/php/code/SmartyValidate/
* @copyright 2001-2005 New Digital Group, Inc. * @copyright 2001-2005 New Digital Group, Inc.
@ -25,31 +25,32 @@
* @package SmartyValidate * @package SmartyValidate
*/ */
/** /**
* test if a value is a valid e-mail address * test if a value is a valid e-mail address
* *
* @param string $value the value being tested * @param string $value
* @param boolean $empty if field can be empty * the value being tested
* @param array params validate parameter values * @param boolean $empty
* @param array formvars form var values * if field can be empty
* @param
* array params validate parameter values
* @param
* array formvars form var values
*/ */
function smarty_validate_criteria_isEmail($value, $empty, &$params, &$formvars) { function smarty_validate_criteria_isEmail($value, $empty, &$params, &$formvars) {
if (strlen($value) == 0)
return $empty;
if(strlen($value) == 0) // in case value is several addresses separated by newlines
return $empty; $_addresses = preg_split('![\n\r]+!', $value);
// in case value is several addresses separated by newlines foreach ($_addresses as $_address) {
$_addresses = preg_split('![\n\r]+!', $value); $_is_valid = !(preg_match('!@.*@|\.\.|\,|\;!', $_address) || !preg_match('!^.+\@(\[?)[a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,}|[0-9]{1,})(\]?)$!', $_address));
foreach($_addresses as $_address) { if (!$_is_valid)
$_is_valid = !(preg_match('!@.*@|\.\.|\,|\;!', $_address) || return false;
!preg_match('!^.+\@(\[?)[a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$!', $_address)); }
return true;
if(!$_is_valid)
return false;
}
return true;
} }
?> ?>