Spec-Zone.ru › Yii 1.1

CEmailValidator

Пакет system.validators
Наследование класс CEmailValidator » CValidator » CComponent
С версии 1.0
Исходный код framework/validators/CEmailValidator.php
CEmailValidator проверяет, является ли значение атрибута корректным электронным адресом.

Общественные свойства

Свойство Тип Описание Определено
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 "). По умолчанию false.

См. также

  • fullPattern

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.

См. также

  • allowName

pattern свойство

public string $pattern;

регулярное выражение, используемое для проверки значения атрибута.

См. также

  • http://www.regular-expressions.info/email.html

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
Исходный код: framework/validators/CEmailValidator.php#160 (показать)
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} строка скрипт проверки на стороне клиента.
Исходный код: framework/validators/CEmailValidator.php#121 (показать)
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, необходимый для выполнения проверки на стороне клиента.

См. также

  • CActiveForm::enableClientValidation

mxSort() метод (доступен начиная с версии 1.1.11)

protected boolean mxSort(mixed $a, mixed $b)
$a смешанный тип первый элемент для сравнения
$b смешанный тип второй элемент для сравнения
{return} логическое значение
Исходный код: framework/validators/CEmailValidator.php#187 (показать)
protected function mxSort($a, $b)
{
    return 
$a['pri']-$b['pri'];
}

Определяет, имеет ли одна запись MX более высокий приоритет, чем другая (т.е. 'pri' меньше). Используется в checkMxPorts.

validateAttribute() метод

protected void validateAttribute(CModel $object, string $attribute)
$object CModel валидируемый объект
$attribute строка валидируемый атрибут
Исходный код: framework/validators/CEmailValidator.php#74 (показать)
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} логическое значение является ли значение корректным адресом электронной почты
Исходный код: framework/validators/CEmailValidator.php#98 (показать)
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.

См. также

  • https://github.com/yiisoft/yii/issues/3764#issuecomment-75457805

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CEmailValidator

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API