@websiteserf

Как правильно валидировать запросы Http запросы php?

Не хочу учиться писать говнокод, так что хочу научиться верно валидировать запросы php.

Первое что пришло на ум (код в контроллере):

//В начале контролера прописывается правило, которое описывает какие данные нужно ожидать и в каком виде (integer string...)
//Длинное название, лишь чтоб вы поняли что она делает. Остальные переменные не попадут в контейнер
Client::waitRequestByRule( 
 'POST' => array('somefield' => 'rules'),
 'GET'  => array('somefield' => 'rules')
); //При успешной проверке, из данных переменных будет создан контейнер
//Проверка. Получен ли запрос, соответствующий правилам
if(Cliend::requestValid()) {
$data = Client::getRequestContainer() // Получение контейнера валидированых данных
}


Второй вариант - формировать общий массив данных из $_FILES,_POST,_GET,_COOKIE
И при обработке этих данных, валидировать, выдавая пользователю ошибки если таковы будут.
$data = Client::request();
$somefield = $data['GET']['somefield'];
if(Data::validate($somefield, 'rule')) return true;


Как правильнее. И насколько плох первый вариант?
  • Вопрос задан
  • 1046 просмотров
Решения вопроса 1
skobkin
@skobkin
Гентушник, разработчик на PHP и Symfony.
По вашему коду мне показалось, что вы смешиваете обработку запросов с ответами, роутинг и валидацию данных.
Второй вариант - формировать общий массив данных из $_FILES,_POST,_GET,_COOKIE

Вообще, $_COOKIE, $_POST и $_GET и так формируют $_REQUEST. Но это не очень хорошая мысль, на самом деле.
Более правильным решением обработки запросов будет что-то типа PSR-7 или Symfony HttpFoundation.
Для валидации и роутинга опять же можно посмотреть на примеры из Symfony: Routing, Validator.
Правда, судя по вашему коду, вы под валидацией именно роутинг и подразумевали.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 12:50
1000 руб./в час
25 апр. 2024, в 12:23
2500 руб./за проект