Приветствую всех гуру. Через ajax допустим заносим в бд запись с отношением допустим product_id есть поле input type="hidden" value="12" name="product_id" Если юзер допустим залезет в код через браузер и изменит на другое id допустим 99999 Вопрос: на стороне сервера нужно сделать проверку есть ли продукт с таким id правильно я понимаю в случаи если нет кинуть Exception?
PHP: if ( filter_input ( INPUT_SERVER, 'REQUEST_METHOD' ) === 'POST' ) { $definition = [ 'product_id' => FILTER_VALIDATE_INT ]; $filters = filter_input_array ( INPUT_POST, $definition ); if ( in_array ( null, $filters, true ) ) { exit ( 'does not exist one name inputs or all' ); } } --- Добавлено --- 6** потом еще раз прочел о чем речь шла...
@S_t_e_e_p, на стороне сервера необходимо проверять всё, вообще всё, вообще всё всё всё, что приходит от пользователя, и имеет ли он право добавлять/менять/удалять информацию под тем или иным id
@S_t_e_e_p, чтобы не делать валидацию параметра и не проверять существование продукта вручную, можно повесить алиас вроде /add/12 или добавить POST-обработчик к имеющемуся GET-обработчику по адресам вроде /product/12, который выводит товар на страницу (выбирая его из БД и проверяя его существование – после можно поставить вилку). Алиас и вилка POST/GET в чистом виде (без написания предварительных действий по выборке товара из БД и проверки его существования), естественно, будут работать, если можно настроить автоматическую выборку и проверку (довольно популярная фишка в наших даже самых простых каркасах). Иначе выносите в функцию и дергайте ее из нужных обработчиков. Валидацию id в адресе можно отделить от выборки, возложив ее на роуты (т.е. заменив фильтрацией).
Была на одном демосайте «таблица продуктов». Решил наглядно продемонстрировать, о чем я писал. AJAX POST-обработчик: PHP: Done<?php exit; GET-обработчик (ничего кроме шаблона писать не пришлось): PHP: <?php extra('head-section',' <script> function addproduct(id) { ... var data=""; xhr.open("POST","/products/"+id,true); ... } </script>'); ?> <h1><?= $page['name'] ?></h1> <form method="post" action="/404"> <button onclick="return addproduct('<?= $page['id'] ?>');">Add</button> <button onclick="return addproduct('bad-<?= $page['id'] ?>');">Bad</button> <p id="result"></p> </form> Это все, не считая вилки AJAX POST/GET. Функцию addproduct целиком можно посмотреть на странице с примером g09.ru /products/item-1 (в таблице есть еще item-2, item-3, item-4). На использование слагов вместо числовых id не обращайте внимания – такова была таблица – код от этого не меняется.