CEmailValidator
| Пакет | system.validators |
|---|---|
| Наследование | класс CEmailValidator » CValidator » CComponent |
| С версии | 1.0 |
| Исходный код | framework/validators/CEmailValidator.php |
Общественные свойства
| Свойство | Тип | Описание | Определено |
|---|---|---|---|
| allowEmpty | boolean | указывает, может ли значение атрибута быть null или пустым. | CEmailValidator |
| allowName | boolean | разрешает ли имя в электронном адресе (например, "Qiang Xue | CEmailValidator |
| attributes | array | список атрибутов, которые должны быть проверены. | CValidator |
| builtInValidators | array | список встроенных валидаторов (имя=>класс) | CValidator |
| checkMX | boolean | указывает, следует ли проверять MX-запись для электронного адреса. | CEmailValidator |
| checkPort | boolean | указывает, следует ли проверять порт 25 для электронного адреса. | CEmailValidator |
| enableClientValidation | boolean | указывает, следует ли выполнять проверку на стороне клиента. | CValidator |
| except | array | список сценариев, для которых валидатор не должен применяться. | CValidator |
| fullPattern | string | регулярное выражение, используемое для проверки электронных адресов с частью имени. | CEmailValidator |
| message | string | пользовательское сообщение об ошибке. | CValidator |
| on | array | список сценариев, для которых валидатор должен применяться. | CValidator |
| pattern | string | регулярное выражение, используемое для проверки значения атрибута. | CEmailValidator |
| safe | boolean | указывает, следует ли считать атрибуты, указанные с этим валидатором, безопасными для массового назначения. | CValidator |
| skipOnError | boolean | указывает, следует ли пропускать данную проверку, если для текущего атрибута уже есть ошибка валидации. | CValidator |
| timeout | null|int | тайм-аут, используемый при попытке открыть соединение с портом в checkMxPorts. | CEmailValidator |
| validateIDN | boolean | указывает, должна ли процедура проверки учитывать IDN (международные доменные имена). | CEmailValidator |
Общественные методы
| Метод | Описание | Определено |
|---|---|---|
| __call() | Вызывает метод с указанным именем, который не является методом класса. | CComponent |
| __get() | Возвращает значение свойства, список обработчиков событий или поведение, основываясь на его имени. | CComponent |
| __isset() | Проверяет, является ли значение свойства null. | CComponent |
| __set() | Устанавливает значение свойства компонента. | CComponent |
| __unset() | Устанавливает свойство компонента в null. | CComponent |
| applyTo() | Возвращает значение, указывающее, применяется ли валидатор к указанному сценарию. | CValidator |
| asa() | Возвращает объект поведения с указанным именем. | CComponent |
| attachBehavior() | Присоединяет поведение к этому компоненту. | CComponent |
| attachBehaviors() | Присоединяет список поведений к компоненту. | CComponent |
| attachEventHandler() | Присоединяет обработчик события к событию. | CComponent |
| canGetProperty() | Определяет, может ли свойство быть прочитано. | CComponent |
| canSetProperty() | Определяет, может ли свойство быть установлено. | CComponent |
| clientValidateAttribute() | Возвращает JavaScript, необходимый для проверки на стороне клиента. | CEmailValidator |
| createValidator() | Создаёт объект валидатора. | CValidator |
| detachBehavior() | Отсоединяет поведение от компонента. | CComponent |
| detachBehaviors() | Отсоединяет все поведения от компонента. | CComponent |
| detachEventHandler() | Отсоединяет существующий обработчик события. | CComponent |
| disableBehavior() | Отключает присоединённое поведение. | CComponent |
| disableBehaviors() | Отключает все присоединённые к этому компоненту поведения. | CComponent |
| enableBehavior() | Включает присоединённое поведение. | CComponent |
| enableBehaviors() | Включает все присоединённые к этому компоненту поведения. | CComponent |
| evaluateExpression() | Вычисляет PHP-выражение или обратный вызов в контексте этого компонента. | CComponent |
| getEventHandlers() | Возвращает список присоединённых обработчиков событий для события. | CComponent |
| hasEvent() | Определяет, определено ли событие. | CComponent |
| hasEventHandler() | Проверяет, есть ли присоединённые обработчики к указанному событию. | CComponent |
| hasProperty() | Определяет, определено ли свойство. | CComponent |
| raiseEvent() | Вызывает событие. | CComponent |
| validate() | Проверяет указанный объект. | CValidator |
| validateValue() | Проверяет статическое значение, чтобы определить, является ли оно корректным электронным адресом. | CEmailValidator |
Защищённые методы
| Метод | Описание | Определено в |
|---|---|---|
| addError() | Добавляет ошибку об указанном атрибуте в активную запись. | CValidator |
| checkMxPorts() | Возвращает список записей MX для $domain и проверяет, открыт ли порт 25 | CEmailValidator |
| isEmpty() | Проверяет, пустое ли заданное значение. | CValidator |
| mxSort() | Определяет, имеет ли одна запись MX более высокий приоритет, чем другая | CEmailValidator |
| validateAttribute() | Проверяет атрибут объекта. | CEmailValidator |
Подробное описание свойств
allowEmpty свойство
public boolean $allowEmpty;
указывает, может ли значение атрибута быть null или пустым. По умолчанию true, что означает, что если атрибут пуст, он считается корректным.
allowName свойство
public boolean $allowName;
разрешить имя в адресе электронной почты (например, "Qiang Xue
См. также
checkMX свойство
public boolean $checkMX;
указывать, следует ли проверять запись MX для адреса электронной почты. По умолчанию false. Чтобы включить проверку, необходимо убедиться, что функция PHP 'checkdnsrr' присутствует в вашей установке PHP. Обратите внимание, что эта проверка может завершиться неудачей из-за временных проблем, даже если адрес электронной почты действителен.
checkPort свойство
public boolean $checkPort;
указывает, следует ли проверять порт 25 для адреса электронной почты. По умолчанию false. Для включения, убедитесь, что функции PHP 'dns_get_record' и 'fsockopen' доступны в вашей установке PHP. Обратите внимание, что эта проверка может завершиться неудачей из-за временных проблем, даже если адрес электронной почты действителен.
fullPattern свойство
public string $fullPattern;
регулярное выражение, используемое для проверки адресов электронной почты с частью имени. Это свойство используется только тогда, когда allowName равно true.
См. также
pattern свойство
public string $pattern;
регулярное выражение, используемое для проверки значения атрибута.
timeout свойство (доступно начиная с версии 1.1.19)
public null|int $timeout;
таймаут, используемый при попытке открыть соединение с портом в checkMxPorts. Если null (по умолчанию), используется значение default_socket_timeout из php.ini. Если не равно null, таймаут устанавливается в секундах.
validateIDN свойство (доступно начиная с версии 1.1.13)
public boolean $validateIDN;
указывает, должна ли проверка учитывать IDN (международные доменные имена). Значение по умолчанию — false, что означает, что проверка адресов электронной почты, содержащих IDN, всегда будет неудачной.
Подробное описание методов
checkMxPorts() метод (доступен начиная с версии 1.1.11)
protected boolean checkMxPorts(string $domain) | ||
| $domain | строка | домен для проверки |
| {return} | логическое значение | true, если был найден доступный сервер MX |
protected function checkMxPorts($domain)
{
$records=dns_get_record($domain, DNS_MX);
if($records===false || empty($records))
return false;
$timeout=is_int($this->timeout)?$this->timeout:((int)ini_get('default_socket_timeout'));
usort($records,array($this,'mxSort'));
foreach($records as $record)
{
$handle=@fsockopen($record['target'],25,$errno,$errstr,$timeout);
if($handle!==false)
{
fclose($handle);
return true;
}
}
return false;
}
Возвращает список записей MX для $domain и проверяет, открыт ли порт 25 на одном из них.
clientValidateAttribute() метод (доступен начиная с версии 1.1.7)
public string clientValidateAttribute(CModel $object, string $attribute) | ||
| $object | CModel | валидируемый объект данных |
| $attribute | строка | имя атрибута, подлежащего валидации. |
| {return} | строка | скрипт проверки на стороне клиента. |
public function clientValidateAttribute($object,$attribute)
{
if($this->validateIDN)
{
Yii::app()->getClientScript()->registerCoreScript('punycode');
// punycode.js works only with the domains - so we have to extract it before punycoding
$validateIDN='
var info = value.match(/^(.[^@]+)@(.+)$/);
if (info)
value = info[1] + "@" + punycode.toASCII(info[2]);
';
}
else
$validateIDN='';
$message=$this->message!==null ? $this->message : Yii::t('yii','{attribute} is not a valid email address.');
$message=strtr($message, array(
'{attribute}'=>$object->getAttributeLabel($attribute),
));
$condition="!value.match({$this->pattern})";
if($this->allowName)
$condition.=" && !value.match({$this->fullPattern})";
return "
$validateIDN
if(".($this->allowEmpty ? "jQuery.trim(value)!='' && " : '').$condition.") {
messages.push(".CJSON::encode($message).");
}
";
}
Возвращает JavaScript, необходимый для выполнения проверки на стороне клиента.
См. также
mxSort() метод (доступен начиная с версии 1.1.11)
protected boolean mxSort(mixed $a, mixed $b) | ||
| $a | смешанный тип | первый элемент для сравнения |
| $b | смешанный тип | второй элемент для сравнения |
| {return} | логическое значение | |
protected function mxSort($a, $b)
{
return $a['pri']-$b['pri'];
}
Определяет, имеет ли одна запись MX более высокий приоритет, чем другая (т.е. 'pri' меньше). Используется в checkMxPorts.
validateAttribute() метод
protected void validateAttribute(CModel $object, string $attribute) | ||
| $object | CModel | валидируемый объект |
| $attribute | строка | валидируемый атрибут |
protected function validateAttribute($object,$attribute)
{
$value=$object->$attribute;
if($this->allowEmpty && $this->isEmpty($value))
return;
if(!$this->validateValue($value))
{
$message=$this->message!==null?$this->message:Yii::t('yii','{attribute} is not a valid email address.');
$this->addError($object,$attribute,$message);
}
}
Проверяет атрибут объекта. Если есть ошибка, сообщение об ошибке добавляется в объект.
validateValue() метод (доступен начиная с версии 1.1.1)
public boolean validateValue(mixed $value) | ||
| $value | смешанный тип | значение для проверки |
| {return} | логическое значение | является ли значение корректным адресом электронной почты |
public function validateValue($value)
{
if(is_string($value) && $this->validateIDN)
$value=$this->encodeIDN($value);
// make sure string length is limited to avoid DOS attacks
$valid=is_string($value) && strlen($value)<=254 && (preg_match($this->pattern,$value) || $this->allowName && preg_match($this->fullPattern,$value));
if($valid)
$domain=rtrim(substr($value,strpos($value,'@')+1),'>');
if($valid && $this->checkMX && function_exists('checkdnsrr'))
$valid=checkdnsrr($domain,'MX');
if($valid && $this->checkPort && function_exists('fsockopen') && function_exists('dns_get_record'))
$valid=$this->checkMxPorts($domain);
return $valid;
}
Проверяет статическое значение на соответствие формату электронного адреса. Этот метод предоставляет возможность вызова напрямую без использования механизма проверки правил модели.
Обратите внимание, что этот метод не учитывает свойство allowEmpty.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CEmailValidator