Может показаться грязным хаком, но вы могли бы подделать сообщение формы, установив данные $ _POST? Скажем, вы получили JSON, вы могли бы сделать что-то вроде:
$json = "...."; //json encoded string
$arr = json_decode($json, true);
foreach($arr as $key => $value)
{
$_POST[$key] => $value;
}
// do form validation as if the data was posted from a form.
Это конечно просто быстрое решение. Вы можете расширить / перезаписать части библиотеки Form_validation. Как бы я это сделал:
- Добавьте библиотеку MY_Form_validation.php, скопируйте и вставьте ВСЕ функции из Form_validation.php, которые используют
$_POST
(set_rules()
, run()
, matches()
)
- Заменить все экземпляры
$_POST
в MY_Form_validation.php на $this->validate_data
- Установите
$validate_data
в $_POST
в конструкторе.
- Добавить функцию
set_validate_data()
, которая позволяет перезаписывать $this->validate_data
Вам нужно будет использовать массив $ _POST после проверки данных, если вы хотите использовать очищенные данные. Если это недопустимо, также добавьте функцию, которая очищает $ this-> validate_data и возвращает чистый массив XSS.