Класс yii\validators\IpValidator
| Наследование | yii\validators\IpValidator » yii\validators\Validator » yii\base\Component » yii\base\Object |
|---|---|
| Реализует | yii\base\Configurable |
| Доступна с версии | 2.0.7 |
| Исходный код | https://github.com/yiisoft/yii2/blob/master/framework/validators/IpValidator.php |
Валидатор проверяет, является ли значение атрибута корректным адресом IPv4/IPv6 или подсетью.
Он также может изменить значение атрибута, если включена нормализация расширения IPv6.
Ниже приведены примеры правил валидации, использующих этот валидатор:
['ip_address', 'ip'], // IPv4 or IPv6 address ['ip_address', 'ip', 'ipv6' => false], // IPv4 address (IPv6 is disabled) ['ip_address', 'ip', 'subnet' => true], // requires a CIDR prefix (like 10.0.0.1/24) for the IP address ['ip_address', 'ip', 'subnet' => null], // CIDR prefix is optional ['ip_address', 'ip', 'subnet' => null, 'normalize' => true], // CIDR prefix is optional and will be added when missing ['ip_address', 'ip', 'ranges' => ['192.168.0.0/24']], // only IP addresses from the specified subnet are allowed ['ip_address', 'ip', 'ranges' => ['!192.168.0.0/24', 'any']], // any IP is allowed except IP in the specified subnet ['ip_address', 'ip', 'expandIPv6' => true], // expands IPv6 address to a full notation format
Публичные свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| $attributeNames | массив | Имена атрибутов. | yii\validators\Validator |
| $attributes | массив|строка | Атрибуты, которые должны быть проверены этим валидатором. | yii\validators\Validator |
| $behaviors | yii\base\Behavior[] | Список присоединённых к этому компоненту поведений. | yii\base\Component |
| $builtInValidators | массив | Список встроенных валидаторов (имя => класс или конфигурация) | yii\validators\Validator |
| $enableClientValidation | логическое значение | Включить ли проверку на стороне клиента для этого валидатора. | yii\validators\Validator |
| $except | массив|строка | Сценарии, для которых валидатор не должен применяться. | yii\validators\Validator |
| $expandIPv6 | логическое значение | Развернуть ли адрес IPv6 в полном формате записи. | yii\validators\IpValidator |
| $hasSubnet | строка | Пользовательское сообщение об ошибке используется, когда валидация завершается неудачно из-за того, что $subnet ложно, но префикс CIDR присутствует. | yii\validators\IpValidator |
| $ipv4 | логическое значение | Может ли проверяемое значение быть адресом IPv4. | yii\validators\IpValidator |
| $ipv4NotAllowed | строка | Пользовательское сообщение об ошибке используется, когда валидация завершается неудачно из-за отключенной проверки IPv4. | yii\validators\IpValidator |
| $ipv4Pattern | строка | Регулярное выражение для проверки адреса IPv4 | yii\validators\IpValidator |
| $ipv6 | логическое значение | Может ли проверяемое значение быть адресом IPv6. | yii\validators\IpValidator |
| $ipv6NotAllowed | строка | Пользовательское сообщение об ошибке используется, когда валидация завершается неудачно из-за отключенной проверки IPv6. | yii\validators\IpValidator |
| $ipv6Pattern | строка | Регулярное выражение для проверки адреса IPv6 | yii\validators\IpValidator |
| $isEmpty | вызываемый объект | Функция PHP, которая заменяет реализацию по умолчанию isEmpty(). | yii\validators\Validator |
| $message | строка | Пользовательское сообщение об ошибке используется, когда валидация завершается неудачно из-за неправильного формата IP-адреса. | yii\validators\IpValidator |
| $negation | логическое значение | Может ли адрес начинаться с символа NEGATION_CHAR. | yii\validators\IpValidator |
| $networks | массив | Псевдонимы сетей, которые могут быть использованы в $ranges. | yii\validators\IpValidator |
| $noSubnet | строка | Пользовательское сообщение об ошибке используется, когда валидация завершается неудачно из-за того, что подсеть $subnet установлена в 'only', но префикс CIDR не задан. | yii\validators\IpValidator |
| $normalize | логическое значение | Добавить ли префикс CIDR с наименьшей длиной (32 для IPv4 и 128 для IPv6) к адресу без него. | yii\validators\IpValidator |
| $notInRange | строка | Пользовательское сообщение об ошибке используется, когда валидация завершается неудачно, потому что IP-адрес не разрешен в соответствии с проверкой $ranges. | yii\validators\IpValidator |
| $on | массив|строка | Сценарии, для которых может применяться валидатор. | yii\validators\Validator |
| $ranges | массив | Диапазоны IPv4 или IPv6, которые разрешены или запрещены. | yii\validators\IpValidator |
| $skipOnEmpty | логическое значение | Пропустить ли эту проверку, если значение атрибута равно null или пустой строке. | yii\validators\Validator |
| $skipOnError | логическое значение | Пропустить ли эту проверку, если у проверяемого атрибута уже есть ошибка валидации в соответствии с предыдущими правилами. | yii\validators\Validator |
| $subnet | логическое значение | Может ли адрес быть IP с подсетью CIDR, например `192. | yii\validators\IpValidator |
| $when | вызываемый объект | Функция PHP, возвращаемое значение которой определяет, следует ли применять этот валидатор. | yii\validators\Validator |
| $whenClient | строка | Имя JavaScript-функции, возвращаемое значение которой определяет, следует ли применять этот валидатор на стороне клиента. | yii\validators\Validator |
| $wrongCidr | строка | Пользовательское сообщение об ошибке используется, когда валидация завершается неудачно из-за неправильного CIDR. | yii\validators\IpValidator |
Публичные методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает метод с указанным именем, который не является методом класса. | yii\base\Component |
| __clone() | Этот метод вызывается после создания объекта путем клонирования существующего. | yii\base\Component |
| __construct() | Конструктор. | yii\base\Object |
| __get() | Возвращает значение свойства компонента. | yii\base\Component |
| __isset() | Проверяет, установлено ли свойство, т. е. определено и не равно null. | yii\base\Component |
| __set() | Устанавливает значение свойства компонента. | yii\base\Component |
| __unset() | Устанавливает свойство компонента в null. | yii\base\Component |
| addError() | Добавляет ошибку об указанном атрибуте к объекту модели. | yii\validators\Validator |
| attachBehavior() | Присоединяет поведение к этому компоненту. | yii\base\Component |
| attachBehaviors() | Присоединяет список поведений к компоненту. | yii\base\Component |
| behaviors() | Возвращает список поведений, которые должен демонстрировать этот компонент. | yii\base\Component |
| canGetProperty() | Возвращает значение, указывающее, можно ли прочитать свойство. | yii\base\Component |
| canSetProperty() | Возвращает значение, указывающее, можно ли установить свойство. | yii\base\Component |
| className() | Возвращает полное квалифицированное имя этого класса. | yii\base\Object |
| clientValidateAttribute() | Возвращает JavaScript, необходимый для выполнения проверки на стороне клиента. | yii\validators\IpValidator |
| createValidator() | Создает объект валидатора. | yii\validators\Validator |
| detachBehavior() | Отсоединяет поведение от компонента. | yii\base\Component |
| detachBehaviors() | Отсоединяет все поведения от компонента. | yii\base\Component |
| ensureBehaviors() | Убеждается, что поведения, объявленные в behaviors(), присоединены к этому компоненту. | yii\base\Component |
| getAttributeNames() | Возвращает очищенные имена атрибутов без символа ! в начале. | yii\validators\Validator |
| getBehavior() | Возвращает объект поведения с указанным именем. | yii\base\Component |
| getBehaviors() | Возвращает все поведения, присоединенные к этому компоненту. | yii\base\Component |
| getClientOptions() | Возвращает параметры проверки на стороне клиента. | yii\validators\IpValidator |
| getRanges() | yii\validators\IpValidator | |
| hasEventHandlers() | Возвращает значение, указывающее, есть ли обработчики, присоединенные к указанному событию. | yii\base\Component |
| hasMethod() | Возвращает значение, указывающее, определен ли метод. | yii\base\Component |
| hasProperty() | Возвращает значение, указывающее, определено ли свойство для этого компонента. | yii\base\Component |
| init() | Инициализирует объект. | yii\validators\IpValidator |
| isActive() | Возвращает значение, указывающее, активен ли валидатор для данного сценария и атрибута. | yii\validators\Validator |
| isEmpty() | Проверяет, пусто ли заданное значение. | yii\validators\Validator |
| off() | Отсоединяет существующий обработчик событий от этого компонента. | yii\base\Component |
| on() | Присоединяет обработчик событий к событию. | yii\base\Component |
| setRanges() | Устанавливает диапазоны IPv4 или IPv6, которые разрешены или запрещены. | yii\validators\IpValidator |
| trigger() | Вызывает событие. | yii\base\Component |
| validate() | Проверяет заданное значение. | yii\validators\Validator |
| validateAttribute() | Проверяет один атрибут. | yii\validators\IpValidator |
| validateAttributes() | Проверяет указанный объект. | yii\validators\Validator |
Защищенные методы
| Метод | Описание | Определено в |
|---|---|---|
| formatMessage() | Форматирует сообщение с использованием I18N или простым strtr, если \Yii::$app недоступен. | yii\validators\Validator |
| validateIPv4() | Проверяет адрес IPv4 | yii\validators\IpValidator |
| validateIPv6() | Проверяет адрес IPv6 | yii\validators\IpValidator |
| validateValue() | Проверяет значение. | yii\validators\IpValidator |
Константы
| Константа | Значение | Описание | Определено в |
|---|---|---|---|
| IPV4_ADDRESS_LENGTH | 32 | Длина адреса IPv4 в битах | yii\validators\IpValidator |
| IPV6_ADDRESS_LENGTH | 128 | Длина адреса IPv6 в битах | yii\validators\IpValidator |
| NEGATION_CHAR | '!' | Символ отрицания. Используется для отрицания $ranges или $networks, или для отрицания проверяемого значения, когда $negation установлено в true | yii\validators\IpValidator |
Подробности свойств
$expandIPv6 общедоступное свойство
Расширять ли адрес IPv6 до полного формата записи. По умолчанию false.
public boolean $expandIPv6 = false
$hasSubnet общедоступное свойство
Используется пользовательское сообщение об ошибке, когда проверка завершается неудачно из-за $subnet равно false, но префикс CIDR присутствует.
Вы можете использовать следующие плейсхолдеры в сообщении:
-
{attribute}: метка атрибута, который проверяется -
{value}: значение атрибута, который проверяется
См. также $subnet.
public string $hasSubnet = null
$ipv4 общедоступное свойство
Является ли проверяемое значение адресом IPv4. По умолчанию true.
public boolean $ipv4 = true
$ipv4NotAllowed общедоступное свойство
Пользовательское сообщение об ошибке используется, когда проверка не проходит из-за отключенной валидации IPv4.
Вы можете использовать следующие плейсхолдеры в сообщении:
-
{attribute}: метка атрибута, который проверяется -
{value}: значение атрибута, который проверяется
См. также $ipv4.
public string $ipv4NotAllowed = null
$ipv4Pattern общедоступное свойство
Шаблон регулярных выражений для проверки адреса IPv4
public string $ipv4Pattern = '/^(?:(?:2(?:[0-4][0-9]|5[0-5])|[0-1]?[0-9]?[0-9])\.){3}(?:(?:2([0-4][0-9]|5[0-5])|[0-1]?[0-9]?[0-9]))$/'
$ipv6 общедоступное свойство
Является ли проверяемое значение адресом IPv6. По умолчанию true.
public boolean $ipv6 = true
$ipv6NotAllowed общедоступное свойство
Пользовательское сообщение об ошибке используется, когда проверка не проходит из-за отключенной валидации IPv6.
Вы можете использовать следующие плейсхолдеры в сообщении:
-
{attribute}: метка атрибута, который проверяется -
{value}: значение атрибута, который проверяется
См. также $ipv6.
public string $ipv6NotAllowed = null
$ipv6Pattern общедоступное свойство
Шаблон регулярных выражений для проверки адреса IPv6
public string $ipv6Pattern = '/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/'
$message общедоступное свойство
Пользовательское сообщение об ошибке используется при ошибке формата IP-адреса.
Вы можете использовать следующие плейсхолдеры в сообщении:
-
{attribute}: метка атрибута, который проверяется -
{value}: значение атрибута, который проверяется
public string $message = null
$negation общедоступное свойство
Разрешает ли адрес символ NEGATION_CHAR в начале. По умолчанию false.
public boolean $negation = false
$networks общедоступное свойство
Псевдонимы сетей, которые могут использоваться в $ranges.
- ключ - имя псевдонима
- значение - массив строк. Строка может быть диапазоном IP-адресов, IP-адресом или другим псевдонимом. Строка может быть отрицаемой с помощью NEGATION_CHAR (независимо от
negationопции).
По умолчанию определены следующие псевдонимы:
-
*:any -
any:0.0.0.0/0, ::/0 -
private:10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, fd00::/8 -
multicast:224.0.0.0/4, ff00::/8 -
linklocal:169.254.0.0/16, fe80::/10 -
localhost:127.0.0.0/8', ::1 -
documentation:192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24, 2001:db8::/32 -
system:multicast, linklocal, localhost, documentation
public array $networks = ['*' => ['any'], 'any' => ['0.0.0.0/0', '::/0'], 'private' => ['10.0.0.0/8', '172.16.0.0/12', '192.168.0.0/16', 'fd00::/8'], 'multicast' => ['224.0.0.0/4', 'ff00::/8'], 'linklocal' => ['169.254.0.0/16', 'fe80::/10'], 'localhost' => ['127.0.0.0/8', '::1'], 'documentation' => ['192.0.2.0/24', '198.51.100.0/24', '203.0.113.0/24', '2001:db8::/32'], 'system' => ['multicast', 'linklocal', 'localhost', 'documentation']]
$noSubnet общедоступное свойство
Пользовательское сообщение об ошибке используется, когда проверка не проходит из-за того, что параметр подсети $subnet установлен в 'только', но префикс CIDR не задан.
Вы можете использовать следующие плейсхолдеры в сообщении:
-
{attribute}: метка атрибута, который проверяется -
{value}: значение атрибута, который проверяется
См. также $subnet.
public string $noSubnet = null
$normalize общедоступное свойство
Добавлять ли префикс CIDR с минимальной длиной (32 для IPv4 и 128 для IPv6) к адресу без него. Работает только если subnet не false. Например:
-
10.0.1.5будет нормализован до10.0.1.5/32 -
2008:db0::1будет нормализован до2008:db0::1/128По умолчаниюfalse.
См. также $subnet.
public boolean $normalize = false
$notInRange общедоступное свойство
Пользовательское сообщение об ошибке используется, когда проверка не проходит из-за того, что IP-адрес не разрешён настройкой $ranges.
Вы можете использовать следующие плейсхолдеры в сообщении:
-
{attribute}: метка атрибута, который проверяется -
{value}: значение атрибута, который проверяется
См. также $ranges.
public string $notInRange = null
$ranges общедоступное свойство
Диапазоны IPv4 или IPv6, которые разрешены или запрещены.
Когда массив пуст или опция не задана, все IP-адреса разрешены.
В противном случае правила проверяются последовательно до первого совпадения. IP-адрес запрещён, если он не совпал ни с одним из правил.
Пример:
[
'ranges' => [
'192.168.10.128'
'!192.168.10.0/24',
'any' // allows any other IP addresses
]
]
В данном примере доступ разрешен для всех IPv4 и IPv6 адресов, кроме подсети 192.168.10.0/24. IPv4 адрес 192.168.10.128 также разрешен, так как он указан раньше ограничения.
public array getRanges ( )
public void setRanges ( $ranges )
$subnet общедоступное свойство
Можно ли использовать адрес с подсетью CIDR, например, 192.168.10.0/24. Возможные значения:
-
false- адрес не должен иметь подсети (по умолчанию). -
true- указать подсеть обязательно. -
null- указать подсеть необязательно.
public boolean $subnet = false
$wrongCidr общедоступное свойство
Пользовательское сообщение об ошибке используется при ошибке CIDR.
Вы можете использовать следующие плейсхолдеры в сообщении:
-
{attribute}: метка атрибута, который проверяется -
{value}: значение атрибута, который проверяется
См. также $subnet.
public string $wrongCidr = null
Подробное описание методов
clientValidateAttribute() public method
Возвращает JavaScript, необходимый для выполнения проверки на стороне клиента.
Вызывает getClientOptions() для генерации массива опций для проверки на стороне клиента.
Вы можете переопределить этот метод, чтобы вернуть код проверки JavaScript, если валидатор поддерживает проверку на стороне клиента.
В коде проверки предварительно определены следующие переменные JavaScript:
-
attribute: объект, описывающий атрибут, который проверяется. -
value: значение, которое проверяется. -
messages: массив, используемый для хранения сообщений об ошибках проверки для атрибута. -
deferred: массив, используемый для хранения отложенных объектов для асинхронной проверки. -
$form: объект jQuery, содержащий элемент формы.
Объект attribute содержит следующие свойства:
-
id: уникальный идентификатор атрибута (например, "loginform-username") в форме. -
name: имя атрибута или выражение (например, "[0]content" для табличного ввода). -
container: селектор jQuery контейнера поля ввода. -
input: селектор jQuery поля ввода в контексте формы. -
error: селектор jQuery тега ошибки в контексте контейнера. -
status: состояние поля ввода, 0: пустое, не введено ранее, 1: проверенное, 2: ожидание проверки, 3: проверка.
| public string|null clientValidateAttribute ( $model, $attribute, $view ) | ||
|---|---|---|
| $model | yii\base\Model |
Проверяемая модель данных. |
| $attribute | string |
Имя атрибута, который нужно проверить. |
| $view | yii\web\View |
Объект представления, который будет использоваться для отображения представлений или файлов представлений, содержащих форму модели с применением этого валидатора. |
| return | string|null |
Скрипт проверки на стороне клиента. Null, если валидатор не поддерживает проверку на стороне клиента. |
getClientOptions() public method
Возвращает параметры проверки на стороне клиента.
Этот метод обычно вызывается из clientValidateAttribute(). Вы можете переопределить этот метод для изменения параметров, которые будут переданы в проверку на стороне клиента.
| public array getClientOptions ( $model, $attribute ) | ||
|---|---|---|
| $model | yii\base\Model |
Проверяемая модель. |
| $attribute | string |
Имя проверяемого атрибута. |
| return | array |
Параметры проверки на стороне клиента. |
getRanges() public method
| public array getRanges ( ) | ||
|---|---|---|
| return | array |
Диапазоны IPv4 или IPv6, которые разрешены или запрещены. |
init() public method
Инициализирует объект.
Этот метод вызывается в конце конструктора после инициализации объекта с заданной конфигурацией.
| public void init ( ) |
|---|
setRanges() public method
Устанавливает диапазоны IPv4 или IPv6, которые разрешены или запрещены.
Выполняются следующие подготовительные задачи:
- Рекурсивно подменяет псевдонимы (описанные в $networks) их значениями.
- Удаляет дубликаты.
| public void setRanges ( $ranges ) | ||
|---|---|---|
| $ranges | array |
Диапазоны IPv4 или IPv6, которые разрешены или запрещены. Если массив пуст или опция не установлена, все IP-адреса разрешены. В противном случае правила проверяются последовательно, пока не найдено совпадение. IP-адрес запрещен, если он не соответствует ни одному из правил. Пример: [
'ranges' => [
'192.168.10.128'
'!192.168.10.0/24',
'any' // allows any other IP addresses
]
]
В этом примере доступ разрешен для всех адресов IPv4 и IPv6, за исключением подсети |
validateAttribute() public method
Проверяет отдельный атрибут.
Подклассы должны реализовать этот метод, чтобы предоставить фактический логику проверки.
| public void validateAttribute ( $model, $attribute ) | ||
|---|---|---|
| $model | yii\base\Model |
Модель данных, которая должна быть проверена. |
| $attribute | string |
Имя атрибута, который нужно проверить. |
validateIPv4() protected method
Проверяет адрес IPv4
| protected boolean validateIPv4 ( $value ) | ||
|---|---|---|
| $value | string | |
validateIPv6() protected method
Проверяет адрес IPv6
| protected boolean validateIPv6 ( $value ) | ||
|---|---|---|
| $value | string | |
validateValue() protected method
Проверяет значение.
Класс валидатора может реализовать этот метод для поддержки проверки данных вне контекста модели данных.
| protected array|null validateValue ( $value ) | ||
|---|---|---|
| $value | mixed |
Значение данных, которое нужно проверить. |
| return | array|null |
Сообщение об ошибке и параметры для вставки в сообщение об ошибке. Null должен быть возвращен, если данные валидны. |
| throws | yii\base\NotSupportedException |
если валидатор не поддерживает проверку данных без модели. |
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-validators-ipvalidator.html