Фреймворк CodeIgniter Version 2.1.3


Валидация форм

CodeIgniter предоставляет класс всесторонней валидации форм и подготовки данных, который помогает минимизировать количество кода.

Обзор

Перед тем, как объяснить подход CodeIgniter к валидации, давайте опишем идеальный сценарий:

  1. Отображается форма.
  2. Вы ее заполняете и отправляете.
  3. Если вы заполняете что-то неправильно, или возможно отсутствует требуемый элемент, форма отображается снова. При этом она уже содержит ранее введенные данные вместе с текстами ошибок, указывающими на проблему.
  4. Этот процесс продолжается, пока вы не отправите корректно заполненную форму.

На принимающем конце скрипт должен:

  1. Проверять требуемые данные.
  2. Проверять корректность типа данных и соответствие критериям. Например, если передано имя пользователя, оно должно содержать только правильные данные. Оно должно быть более минимальной длины, но не более указанной максимальной. Имя пользователя не может совпадать с уже существующим в базе именем, и не должно быть в списке зарезервированных слов. И так далее.
  3. Очистить данные для безопасности.
  4. Предварительно форматировать данные, если это требуется (обрезать лишние пробелы, декодировать сущности HTML и так далее).
  5. Подготовить данные для вставки в базу данных.

Хотя нет ничего сложного в вышеупомянутом процессе, он обычно требует некоторое значительное количество кода, отображение сообщений об ошибках, различные контролирующие структуры и обычно размещается вместе с HTML формы. Валидация форм, которую очень просто сделать, обычно очень беспорядочна и утомительна в реализации.

Учебник по валидации форм

Далее следует «настольный» учебник по реализации валидации форм с CodeIgniter.

Чтобы выполнить валидацию формы, вам нужны три вещи:

  1. Файл отображения с формой.
  2. Файл отображения, содержащий сообщение об успехе.
  3. Функция контроллера, чтобы получать и обрабатывать переданные данные.

Давайте сделаем эти три простые вещи, используя форму для регистрации пользователей в качестве примера.

Форма

Используя текстовый редактор, создайте форму myform.php. В нее поместите этот код, и сохраните ее в вашу директорию applications/views/:

Страница успеха

Используя текстовый редактор, создайте файл formsuccess.php. Поместите в него этот код, и сохраните в вашу директорию applications/views/:

Контроллер

Используя текстовый редактор, создайте контроллер form.php. Поместите в него этот код, и сохраните в вашей директории applications/controllers/:

Попробуйте!

Чтобы попробовать вашу форму, посетите ваш сайт по URL, соответствующий этому:

example.com/index.php/form/

Если вы нажали кнопку Отправить, вы увидите перезагруженную форму. Это происходит потому, что вы пока не указали никаких правил валидации.

Так как вы не указали классу Form Validation что нужно валидировать, он возвращает FALSE по умолчанию. Функция run() возвращает TRUE только если успешно применила ваши правила, без каких-либо нарушений.

Объяснение

Обратите внимание на несколько вещей насчет того, что написано выше:

Форма (myform.php) это обычная веб-форма, с несколькими исключениями:

  1. Она использует помощник форм для создания открывающего тега. Технически это не является необходимым. Вы можете создавать форму, используя стандартный HTML. Однако, смысл использования помощника в том, что он генерирует URL для action, основываясь на URL, указанном в конфигурационном файле. Это делает ваше приложение более портативным, когда изменяется его URL.
  2. В верху формы вы увидели такой вызов функции: <?php echo validation_errors(); ?>

    Эта функция вернет любые сообщения об ошибках, возвращенные валидатором. Если там нет ошибок, функция вернет пустую строку.

Контроллер (form.php) имеет единственную функцию: index(). Эта функция инициализирует класс валидации и загружает помощник форм и помощник URL, используемые в отображении. Она также запускает процесс валидации. В зависимости от того, была ли валидация успешной, она отображает форму или страницу успеха.

Установка правил валидации

CodeIgniter позволяет вам установить множество правил валидации, какие вам требуются для каждого данного поля, объединять их в некотором порядке, а также позволяет вам подготавливать и предварительно обрабатывать данные из полей в то же время. Чтобы установить правила валидации, вы будете использовать функцию set_rules():

$this->form_validation->set_rules();

Функция выше принимает три параметра на вход:

  1. Имя поля — существующее имя, которые вы дали полю формы.
  2. Человекочитаемое имя поля, которое будет вставлено в сообщения об ошибках. Например, если имя поля «user», вы можете дать ему человекочитаемое имя «Имя пользователя». Примечание: Если вы хотите сохранять имена полей в языковом файле, пожалуйста посмотрите раздел Перевод имен полей.
  3. Правила валидации для поля формы.

Вот пример. В вашем контроллере (application/controllers/form.php) добавье этот код, сразу после функции инициализации валидации:

$this->form_validation->set_rules('username', 'Имя пользователя', 'required');
$this->form_validation->set_rules('password', 'Пароль', 'required');
$this->form_validation->set_rules('passconf', 'Подтверждение пароля', 'required');
$this->form_validation->set_rules('email', 'Email адрес', 'required');

Теперь ваш контроллер выглядит примерно так:

Теперь передайте форму с пустыми полями, и вы увидите сообщения об ошибках. Если вы передадите форму с заполненными полями, вы увидите страницу успеха.

Примечание: Поля формы не будут перезаполняться при ошибке. Мы вскоре вернемся к этому.

Установка правил массивом

Перед тем как двигаться дальше, отметим, что функция установки правил может принимать массив. Это удобно, если вы предпочитаете устанавливать правила одним действием. Если вы используете этот подход, вы должны называть ключи массива, как показано:

$config = array(
               array(
                     'field'   => 'username',
                     'label'   => 'Имя пользователя',
                     'rules'   => 'required'
                  ),
               array(
                     'field'   => 'password',
                     'label'   => 'Пароль',
                     'rules'   => 'required'
                  ),
               array(
                     'field'   => 'passconf',
                     'label'   => 'Подтверждение пароля',
                     'rules'   => 'required'
                  ),   
               array(
                     'field'   => 'email',
                     'label'   => 'Email адрес',
                     'rules'   => 'required'
                  )
            );

$this->form_validation->set_rules($config);

Объединение правил

CodeIgniter позволяет вам объединять правила. Попробуйте. Измените ваши правила в третьем параметре функции для установки правил, вроде этого:

$this->form_validation->set_rules('username', 'Имя пользователя', 'required|min_length[5]|max_length[12]|is_unique[users.username]');
$this->form_validation->set_rules('password', 'Пароль', 'required|matches[passconf]');
$this->form_validation->set_rules('passconf', 'Подтверждение пароля', 'required');
$this->form_validation->set_rules('email', 'Email адрес', 'required|valid_email|is_unique[users.email]');

Код выше устанавливает следующие правила:

  1. Поле имени пользователя должно содержать не менее 5 и не более 12 символов.
  2. Содержимое поля пароля должно совпадать с подтверждением пароля.
  3. Поле для адреса электронной почты должно содержать правильный адрес электронной почты.

Попробуйте! Передайте вашу форму без соответствующих данных, и вы увидите новые сообщения об ошибках, соответствующие вашим новым правилам. Существуют многочисленные правила, о которых вы можете прочестить ниже.

Подготовка данных

В дополнение к функциям валидации, какие мы использовали выше, вы также можете подготавливать ваши данные различными способами. Для примера, давайте установим такие правила:

$this->form_validation->set_rules('username', 'Имя пользователя', 'trim|required|min_length[5]|max_length[12]|xss_clean');
$this->form_validation->set_rules('password', 'Пароль', 'trim|required|matches[passconf]|md5');
$this->form_validation->set_rules('passconf', 'Подтверждение пароля', 'trim|required');
$this->form_validation->set_rules('email', 'Email адрес', 'trim|required|valid_email');

В этом примере мы обрезаем (trim) данные из полей, конвертируем пароль в MD5 и прогоняем имя пользователя через функцию xss_clean(), которая удалит потенциально опасные данные.

Любые родные функции PHP, которые принимают один параметр, могут быть использованы в качестве правил. Например htmlspecialchars, trim, MD5 и так далее.

Примечание: Вообще, вы захотите использовать функции подготовки данных после правил валидации, так что в случае ошибки, оригинальные данные будут показаны в форме.

Перезаполнение формы

До сих пор мы имели дело только с ошибками. Теперь настало время для перезаполнения формы переданными данными. CodeIgniter предлагает несколько функций-помощников, которые позволяют сделать это. Одна из них используется наиболее часто:

set_value('field name')

Откройте ваше отображение application/views/myform.php и обновите значение в каждом поле, используя фунцию set_value():

Не забудьте включить каждое имя поля в функцию set_value()!

Теперь перезагрузите страницу и передайте форму так, чтобы произошла ошибка. Поля вашей формы будут перезаполнены

Примечание: Раздел Справка по фунциям ниже содержит объяснения по фунциям, которые позволяют перезаполнять меню <select>, переключатели и флаги.

Важное примечание: Если вы используете массив в качестве имени поля формы, вы должны передать его в виде массива функции. Пример:

<input type="text" name="colors[]" value="<?php echo set_value('colors[]'); ?>" size="50" />

Смотрите дополнительную информацию в разделе Использование массивов в качестве имен полей ниже.

Ваши функции-правила

Система валидации поддерживает обратные вызовы (callbacks) для ваших собственных функций. Это позволяет вам расширять класс валидации в соответствии с вашими потребностями. Например, если вы хотите запустить запрос в БД, чтобы убедиться в том, что пользователь выбрал уникальное имя пользователя, вы можете создать функцию с обратным вызовом (callback) для этого. Давайте создадим пример.

В вашем контроллере замените правило "username" на это:

$this->form_validation->set_rules('username', 'Имя пользователя', 'callback_username_check');

Потом добавьте новую функцию username_check() в ваш контроллер. Вот так теперь может выглядеть контроллер:

Перезагрузите вашу форму и передайте ее со словом "test" в качестве имени пользователя. Вы увидите, что данные из формы были переданы для обработки вашей функции.

Чтобы вызвать функцию, просто поместите ее имя в правило, с префиксом "callback_". Если вам нужно получать дополнительные параметры в функции, просто добавьте их в квадратные скобки: "callback_foo[bar]", и они будут переданы в качестве аргументов.

Примечание: Вы также можете обрабатывать данные формы, которые были переданы вашей функции и возвращены ей. Если ваша функция возвращает что-то кроме TRUE или FALSE, будет подразумеваться, что это новые данные из формы, которые следует обрабатывать.

Установка сообщений об ошибках

Все родные сообщения об ошибках храняться в языковом файле: language/english/form_validation_lang.php

Чтобы установить ваши собственные сообщения, вы можете редактировать этот файл, или использовать следующую функцию:

$this->form_validation->set_message('rule', 'Error Message');

Где rule соответствует имени конкретного правила, и Error Message это текст, который должен быть отображен.

Если вы включите %s в вашу строку ошибки, оно будет заменено на человекочитаемое имя, которые вы использовали при определении правила.

В примере с обратным вызовом (вашей функцией-правилом) выше сообщение об ошибке будет установлено передачей имени функции:

$this->form_validation->set_message('username_check')

Вы также можете переопределять любые сообщения об ошибках в языковом файле. Например, чтобы изменить сообщение для правила required («требуется»), сделайте следующее:

$this->form_validation->set_message('required', 'Ваше особенное сообщение');

Перевод имен полей

Если вы хотите сохранить человекочитаемое имя, переданное функции set_rules(), и следовательно, позволить ему быть переведенным, сделайте так:

Сначала, добавьте префикс lang: к имени, как в этом примере:

$this->form_validation->set_rules('first_name', 'lang:first_name', 'required');

Затем сохраните имя в одном из ваших языковых файлов, без префикса:

$lang['first_name'] = 'Имя';

Примечание: Если вы храните элемент массива в языковом файле, которые не загружается автоматически CI, вы должны помнить о том, что вам необходимо самостоятельно подгрузить его в использующем контроллере:

$this->lang->load('file_name');

Смотрите страницу языкового класса за дополнительной информацией о языковых файлах.

Изменение форматирования ошибок

По умолчаиню класс Form Validation использует теги абзаца (<p>) вокруг каждого сообщения об ошибке. Вы можете изменять эти ограничители, глобально или индивидуально.

  1. Глобальное изменение ограничителей

    Чтобы изменить ограничители глобально, в вашей функции контроллера после каждой загрузки класса валидации добавьте это:

    $this->form_validation->set_error_delimiters('<div class="error">', '</div>');

    В этом примере мы переключили ограничители на теги div.

  2. Индивидуальное изменение ограничителей

    Каждая из двух генерирующих ошибки функций, показанных в этом руководстве, может иметь собственные ограничители:

    <?php echo form_error('field name', '<div class="error">', '</div>'); ?>

    или:

    <?php echo validation_errors('<div class="error">', '</div>'); ?>

Раздельное отображение ошибок

Если вы предпочитаете показывать ошибки под каждым полем формы, а не в едином списке, вы можете использовать функцию form_error().

Попробуйте! Измените вашу форму, в соответствии с этим:

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

Важное примечание: Если вы используете массив в качестве имени поля формы, вы должны передать его функции. Пример:

<?php echo form_error('options[size]'); ?>
<input type="text" name="options[size]" value="<?php echo set_value("options[size]"); ?>" size="50" />

Смотрите дополнительную информацию в разделе Использование массивов в качестве имен полей.

Сохранение наборов правил валидации в файле конфигурации

Приятной особенностью класса валидации является то, что он позволяет вам сохранять все ваши правила для целого приложения в конфигурационном файле. Вы можете организовать правила в группы. Эти группы могут загружаться автоматически по совпадению «контроллер/функция» или вы можете загружать их вручную.

Как сохранить ваши правила

Чтобы сохранить ваши правила валидации, просто создайте файл с именем form_validation.php в вашей директории application/config/. В этом файле поместите массив $config с вашими правилами. Как было показано ранее, массив должен соответствовать таком прототипу:

$config = array(
               array(
                     'field'   => 'username',
                     'label'   => 'Имя пользователя',
                     'rules'   => 'required'
                  ),
               array(
                     'field'   => 'password',
                     'label'   => 'Пароль',
                     'rules'   => 'required'
                  ),
               array(
                     'field'   => 'passconf',
                     'label'   => 'Подтверждение пароля',
                     'rules'   => 'required'
                  ),   
               array(
                     'field'   => 'email',
                     'label'   => 'Email адрес',
                     'rules'   => 'required'
                  )
            );

Ваши правила валидации будут автоматически загружены и использованы при вызове функции run().

Пожалуйста обратите внимание на то, что вы должны назвать этот массив $config.

Создание набора правил

Чтобы организовать ваши правила в наборы, поместите их в «подмассивы». Рассмотрим этот пример, показывающий две группы правил. Для примера мы назвали эти группы "signup" и "email". Вы можете называть правила, как вам угодно:

$config = array(
                 'signup' => array(
                                    array(
                                            'field' => 'username',
                                            'label' => 'Имя пользователя',
                                            'rules' => 'required'
                                         ),
                                    array(
                                            'field' => 'password',
                                            'label' => 'Пароль',
                                            'rules' => 'required'
                                         ),
                                    array(
                                            'field' => 'passconf',
                                            'label' => 'Подтверждение пароля',
                                            'rules' => 'required'
                                         ),
                                    array(
                                            'field' => 'email',
                                            'label' => 'Email адрес',
                                            'rules' => 'required'
                                         )
                                    ),
                 'email' => array(
                                    array(
                                            'field' => 'emailaddress',
                                            'label' => 'Email адрес',
                                            'rules' => 'required|valid_email'
                                         ),
                                    array(
                                            'field' => 'name',
                                            'label' => 'Имя',
                                            'rules' => 'required|alpha'
                                         ),
                                    array(
                                            'field' => 'title',
                                            'label' => 'Должность',
                                            'rules' => 'required'
                                         ),
                                    array(
                                            'field' => 'message',
                                            'label' => 'Сообщение',
                                            'rules' => 'required'
                                         )
                                    )                          
               );

Вызов конкретной группы правил

Чтобы вызвать группу правил, передайте ее имя функции run(). Например, чтобы вызвать правила signup, сделайте так:

if ($this->form_validation->run('signup') == FALSE)
{
   $this->load->view('myform');
}
else
{
   $this->load->view('formsuccess');
}

Ассоциирование функции контроллера с группой правил

Альтернативный и более автоматизированный способ вызова группы правил — это именование ее в соответствии с классом и функцией, в которых вы хотите ее использовать. Например, давайте предположим, что мы имеем контроллер с именем Member и функцию в нем signup(). Наш класс может выглядеть так:

<?php

class Member extends CI_Controller {

   function signup()
   {      
      $this->load->library('form_validation');
            
      if ($this->form_validation->run() == FALSE)
      {
         $this->load->view('myform');
      }
      else
      {
         $this->load->view('formsuccess');
      }
   }
}
?>

В конфигурационном файле валидации, создайте группу правил member/signup:

$config = array(
           'member/signup' => array(
                                    array(
                                            'field' => 'username',
                                            'label' => 'Имя пользователя',
                                            'rules' => 'required'
                                         ),
                                    array(
                                            'field' => 'password',
                                            'label' => 'Пароль',
                                            'rules' => 'required'
                                         ),
                                    array(
                                            'field' => 'passconf',
                                            'label' => 'Подтверждение пароля',
                                            'rules' => 'required'
                                         ),
                                    array(
                                            'field' => 'email',
                                            'label' => 'Email адрес',
                                            'rules' => 'required'
                                         )
                                    )
               );

Когда имя группы правил идентично контроллеру и функции, она будет автоматически использоваться при вызове функции run() внутри этого класса и функции.

Использование массивов в качестве имен полей

Класс валидации форм поддерживает использование массивов в качестве имен полей. Рассмотрим этот пример:

<input type="text" name="options[]" value="" size="50" />

Если вы используете массив как имя поля, вы должны использовать точно такое же имя в функциях-помощниках, которые требуют указания имени поля.

Например, чтобы установить правило для полей выше, используйте:

$this->form_validation->set_rules('options[]', 'Параметры', 'required');

Или чтобы показывать сообщения об ошибках около поля:

<?php echo form_error('options[]'); ?>

Или для перезаполнения поля:

<input type="text" name="options[]" value="<?php echo set_value('options[]'); ?>" size="50" />

Вы можете использовать многомерные массивы в качестве имен полей. Например:

<input type="text" name="options[size]" value="" size="50" />

Или:

<input type="text" name="sports[nba][basketball]" value="" size="50" />

Как в нашем первом примере, вы должны использовать соответствующее имя массива в функции-помощнике:

<?php echo form_error('sports[nba][basketball]'); ?>

Если вы используете флаги (checkbox) или другие поля, которые имеют множество опций, не забудьте оставить пустые скобки после каждой опции, так все отмеченные попадут в массив POST:

<input type="checkbox" name="options[]" value="red" />
<input type="checkbox" name="options[]" value="blue" />
<input type="checkbox" name="options[]" value="green" />

Или, если вы используете многомерный массив:

<input type="checkbox" name="options[color][]" value="red" />
<input type="checkbox" name="options[color][]" value="blue" />
<input type="checkbox" name="options[color][]" value="green" />

Если вы используете функции-помощники, также добавьте скобки:

<?php echo form_error('options[color][]'); ?>

Справка по правилам

Далее следует список всех родных правил, которые доступны для использования:

Правило Параметр Описание Пример
required Нет Возвращает FALSE, если элемент формы пуст.  
matches Да Возвращает FALSE, если содержимое элемента формы не соответствует содержимому элемента формы, указанному в параметре. matches[form_item]
is_unique Да Возвращает FALSE, если элемент формы не уникален в указанных в параметре таблице и поле. is_unique[table.field]
min_length Да Возрвращает FALSE, если длина меньше, чем указано в параметре. min_length[6]
max_length Да Возрвращает FALSE, если длина больше, чем указано в параметре. max_length[12]
exact_length Да Возвращае FALSE, если длина не соответствует указанной. exact_length[8]
greater_than Да Возвращает FALSE, если содержимое элемента формы меньше указанного или не является числовым значением. greater_than[8]
less_than Да Возвращает FALSE, если содержимое элемента формы больше чем указано, или не является числовым значением. less_than[8]
alpha Нет Возвращает FALSE, если содержимое элемента формы содержит что-то кроме алфавитных символов.  
alpha_numeric Нет Возвращает FALSE, если содержимое элемента формы содержит что-то кроме алфавитно-числовых символов.  
alpha_dash Нет Возвращает FALSE, если содержимое элемента формы содержит что-то кроме алфавитно-числовых символов, символов подчеркивания или дефисов.  
numeric Нет Возвращает FALSE, если содержимое элемента формы не является числовым значением.  
integer Нет Возвращает FALSE, если содержимое элемента формы содержит что-то кроме целого числа.  
decimal Да Возвращает FALSE, если содержимое элемента формы не является десятичным числом.  
is_natural Нет Возвращает FALSE, если содержимое элемента формы содержит что-то кроме натуральных чисел: 0, 1, 2, 3 и так далее.  
is_natural_no_zero Нет Возвращает FALSE, если содержимое элемента формы содержит что-то кроме натуральных чисел, кроме ноля: 1, 2, 3 и так далее  
valid_email Нет Возвращает FALSE, если элемент формы не содержит корректный адрес электронной почты.  
valid_emails Нет Возвращает FALSE, если элемент формы не содержит список корректных адресов электронной почты.  
valid_ip Нет Возвращает FALSE, если указанный IP-адрес некорректен. Принимает опциональный параметр "IPv4" или "IPv6" для указания формата IP-адреса.  
valid_base64 Нет Возвращает FALSE, если переданная строка содержит что-либо кроме правильных символов Base64.  

Примечание: Эти функции также могут использоваться самостоятельно, например:

$this->form_validation->required($string);

Примечание: Вы также можете использовать любые функции PHP, которые принимают один параметр.

Справка по подготовке данных

Вот список всех функций подготовки данных, доступных для использования:

Имя Параметр Описание
xss_clean Нет Пропускает данные через фильтр XSS, описанный на странице класса Input.
prep_for_form Нет Конвертирует специальные символы HTML так, чтобы они отображались в форме, не разрывая ее.
prep_url Нет Добавляет "http://" к URL-ам, если требуется.
strip_image_tags Нет Обрезает теги HTML от изображений, оставляя только URL.
encode_php_tags Нет Конвертирует теги PHP в соответствия.

Примечание: Вы также можете использовать любую родную функцию PHP, которая принимает один парамер, например trim, htmlspecialchars, urldecode и так далее.

Справка по функциям

Следующие функции доступны для использования в вашем контроллере.

$this->form_validation->set_rules();

Позволяет вам устанавливать правила валидации, как описано выше:

$this->form_validation->run();

Запускает процесс валидации. Возвращает TRUE при успехе или FALSE при неудаче. Вы можете опционально передать имя группы фукнции, как описано в разделе Сохранение групп правил в конфигурационном файле.

$this->form_validation->set_message();

Позволяет вам устанавливать собственные сообщения об ошибках. Смотрите ваше Установка сообщений об ошибках.

Справка по помощникам

Доступны следующие функции-помощники для использования в файлах отображениях, содержащих ваши формы. Это процедурные функции, поэтому они не нуждаются в предварении $this->form_validation.

form_error()

Показывает индивидуальное сообщение об ошибке, ассоциированное с именем поля, переданное функции. Пример:

<?php echo form_error('username'); ?>

Разделители сообщений об ошибках опционально могут быть определены. Смотрите Изменение форматирования ошибок.

validation_errors()

Показывает все сообщения об ошибках. Пример:

<?php echo validation_errors(); ?>

Разделители сообщений об ошибках опционально могут быть определены. Смотрите Изменение форматирования ошибок.

set_value()

Позволяет вам установить значение полей input или textarea. Вы должны передать имя поля в первом параметре функции. Второй опциональный параметр позоволяет вам установить значение по умолчанию. Пример:

<input type="text" name="quantity" value="<?php echo set_value('quantity', '0'); ?>" size="50" />

При первой загрузке в поле формы будет 0.

set_select()

Если вы используете меню <select>, эта функция позволит вам отобразить выбранный элемент. Первый параметр должен содержать имя меню select, второй параметр должен содержать значение элемента, и третий опциональный параметр позволяет вам указать элемент, выбранный по умолчанию (используйте TRUE/FALSE).

Пример:

<select name="myselect">
<option value="one" <?php echo set_select('myselect', 'one', TRUE); ?> >Один</option>
<option value="two" <?php echo set_select('myselect', 'two'); ?> >Два</option>
<option value="three" <?php echo set_select('myselect', 'three'); ?> >Три</option>
</select>

set_checkbox()

Позволяет вам отображать флаг (checkbox) в состоянии, в котором он был передан. Первый параметр должен содержать имя флага, второй параметр должен содержать его значение и третий (опциональный) параметр позволяет вам установить состояние по умолчанию (используйте булевы TRUE или FALSE). Пример:

<input type="checkbox" name="mycheck[]" value="1" <?php echo set_checkbox('mycheck[]', '1'); ?> />
<input type="checkbox" name="mycheck[]" value="2" <?php echo set_checkbox('mycheck[]', '2'); ?> />

set_radio()

Позволяет вам отображать переключатели (radio) в состоянии, в котором они были переданы. Эта функция идентична функции set_checkbox(), описанной выше.

<input type="radio" name="myradio" value="1" <?php echo set_radio('myradio', '1', TRUE); ?> />
<input type="radio" name="myradio" value="2" <?php echo set_radio('myradio', '2'); ?> />
    Поддержать сайт на родительском проекте КГБ