Spec-Zone.ru › Yii 2.0

Класс 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, за исключением подсети 192.168.10.0/24. IP-адрес IPv4 192.168.10.128 также разрешен, так как он указан перед ограничением.

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

Spec-Zone.ru

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