Перевірка даних

eForm: Перевірка даних

Перевірка даних сніпета eForm для створення зворотного зв'язку, замовлення дзвінка, оформлення замовлення товарів на Evolution CMS.

Ця версія підтримує розширену перевірку на стороні сервера і фільтрацію, що використовує дуже гнучкі правила перевірки, які включаються в параметр eform. Ви можете визначити 2 додаткових параметра перевірки, повідомлення про помилку і перевірці або правило фільтру.

Наприклад:

eform="Year of Birth:integer:1:Must be between 1950 and 2002:#RANGE 1950-2002"

Правила перевірки

#LIST - перераховані через кому можливі значення.

Наприклад:

#LIST червоний, зелений, оранжевий, синій

#RANGE - розділені комою можливий числові значення або числові діапазони. При установці діапазону порядок не має значення. 1 ~ 10 і 10 ~ 1 будуть однаково визначати числа між 1 і 10 (включно). Можна використовувати як позитивні так і негативні числа.

Наприклад:

#RANGE 1,3,-5~-15,60~82

#SELECT - визначає правильність значень, які будуть повернуті з бази при запиті. Запит повинен повертати значення тільки однієї колонки (функція перевіряє тільки першу колонку). Ви можете використовувати {\DBASE} {\PREFIX} теги. Вони будуть автоматично замінені на назву бази MODX і використовуваний префікс таблиці.

Наприклад:

#SELECT keyword FROM {\PREFIX}site_keywords

#EVAL - рядок коду PHP. Може повертати true або false. Увага! Хоча #EVAL все ще використовується в eForm 1.4, але в майбутніх версіях вони швидше за все більше не будуть підтримуватися. натомість використовуйте #FUNCTION.

#FUNCTION - назва функції. Функція повинна використовувати тільки одне значення (значення поля) і повертати TRUE або FALSE. Дивіться приклади, щоб розібратися як це діє.

Наприклад:

#FUNCTION myValidationFunction

#REGEX - регулярне вираження. синтаксис preg_match() в PHP.

Приклад:

#REGEX /^[\a-z]+ [\a-z0-9_]+/i

#FILTER - фільтри не перевіряють введених значень, але замінюють слова і значення, які відповідають критеріям. Ви можете використовувати наступні фільтри:

  • #FILTER #LIST
    Використовуйте дві вертикальні риси для поділу замінних і замінюють слів.
    Наприклад:
    #FILTER #LIST badword,verybadword||goodword,verygoodword
  • #FILTER #EVAL
    Например:
    #FILTER #EVAL return myFilterFunction($value);

    (звісно ви повинні бути впевнені в існуванні зазначеної функції)

    Приклади застосування фільтра:

    function myFilterFunction($value){
        $badWords = array('scribble','coding');
        $goodWords = array('design','sleep');
        return str_replace($badWords,$goodWords,$value);
    }
  • #FILTER #REGEX
    Регулярне вираження заміни. Синтаксис preg_replace() в PHP. Пошук і вираз заміни розділяється двома вертикальними рисами (||)

Поля select, radio и checkbox

Ці поля мають автоматичну перевірку. Всі отримані значення перевіряються на відповідність встановленими вами в шаблоні форми. Це дозволяє уникнути додавання сторонніх значень в ці поля.

Приховані поля

За замовчуванням приховані поля присутні як захист від підробки форми при порівнянні використовуваних значень (як в полях select, radio і checkbox). Але в деяких місцях це може бути непотрібно. Наприклад якщо ви використовуєте обробку javascript, яка зберігає свої значення в прихованих полях. У цей випадку ви можете змінити цю поведінку використовуючи параметр eform (включаючи або вимикаючи перевірку).

Приховане поле приклад 1:

Вбудоване поведінку зручно, якщо ви зберігаєте в прихованому полі ідентифікатор документа і не хочете щоб він був змінений будь-ким. Поле має виглядати приблизно так:

<input type="hidden" name="docId" value="31" />

Приховане поле приклад 2:

Якщо ви використовуєте javascript, який зберігає значення в прихованих полях, то вам необхідно прибрати перевірку поля так:

<input type="hidden" name="calculatedField" value="" eform="::0::" />

Приховане поле приклад 3:

Приклад схожий на 2, але ви хочете переконатися, що повернуті значення лежать в допустимих межах чисел. Встановимо для параметра eform заголовок, числовий тип даних, обов'язковість заповнення, повідомлення про помилку і перевірку на діапазон. Це буде виглядати так:

<input type="hidden" name="calculatedField" value="" eform="Calculated Value:integer:1:Calculation out of range:#RANGE 1-10" />

Приклад полів з перевіркою

Випадаючий список - обов'язкове поле (не потрібно перевірка)

<select name="mySelect" eform_options="Select Country::1" /> (тип даних не визначений)
    <option value="en-au">Australia</option>
    <option value="en-us">USA</option>
</select>

Текстове поле - обов'язкове поле і формат даних для дат.

<input type="text" name="dobDate" eform_options="Date of Birth:date:1:@EVAL return (strtotime($value)!==-1)?true:false;" />

Багато чекбоксів - обов'язкове поле, можна вибрати кілька значень.

<input type="checkbox" name="myColors[]" value="Red" eform_options="Colors::1" /> (тип даних не визначений)
<input type="checkbox" name="myColors[]" value="Green" /> (тип даних не визначений)