Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 19.05.2019
Сообщений: 4

Формирование таблиц из БД и элементов управления и обновления записей

10.02.2020, 16:13. Показов 464. Ответов 6
Метки js, mysql, php (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый! Есть вопрос из разряда "можно ли так или как правильно?" .
Есть две таблицы, таблица заявок на ремонт техники и таблица накладных, которые этими заявками наполняются(внешний ключ по id).
На страницу со списком накладных я извлекаю из БД накладные и формирую такую таблицу:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$html = '';
  foreach ($invoices as $arr){
    $html .= '<tr>
      <td>'.$arr['name'].'</td>
      <td>'.$arr['status'].'</td>
      <td>'.$arr['date'].'</td>
      <td>'.$arr['num'].'</td>
      <td>
        <div class="btn-group">
          <a href="invoiceWS.php?id='.$arr['id'].'">+</a>
          <button value="'.$arr['id'].'">x</button>
        </div>
      </td></tr>';
  }
Т.е. помимо столбцов с данными, есть столбец с опциями, например удаления накладной, либо переход на страницу работы с накладной,где по такой же схеме выводится список заявок, добавленных в накладную и опции.
Вопросы следующие:
1. Хранить данные, например id записей, для последующего доступа к ним, в разметке, т.е. в атрибутах value или data-*, или передавать их в ссылки - это нормально или есть другие способы это делать?
2. При переходе по ссылке на invoiceWS.php данные передадутся методом GET и будут видны в адресной строке. Для доступа к БД используется PHPRedBeans, и sql-инъекций быть не должно, но просто хочется убрать это, что бы не маячило) Можно обновляться через js c отправкой POST, но может в этом просто нет ничего страшного и даже париться не стоит?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.02.2020, 16:13
Ответы с готовыми решениями:

Формирование таблиц Word
Доброго времени суток, господа программеры! Есть небольшая проблемка, пытаюсь ее решить, теперь и с Вашей помощью. Необходимо программными...

драйвер верхнего плеча - формирование напряжения управления
Как драйвер типа этого формирует напряжение для затвора? При открытом мосфете и входном напряжении 100В нужно не менее 115, а напряжение...

Формирование файла записей
формирует файл записей данной структуры: type vladelez=record name:String; avto: string ; nomer:550..620; ...

6
1308 / 1000 / 232
Регистрация: 01.10.2018
Сообщений: 3,894
10.02.2020, 16:44
Передавать (одиночные) идентификаторы в адресе более чем нормально. Не нормально удалять по ссылке, т.е. методом GET, но при это передавать идентификаторы в адресе при запросе другим методом (POST) опять-таки более чем нормально.

Добавлено через 3 минуты
Иногда в требованиях бывает "скрывать внутренние идентификаторы", но тогда на их место просто приходят дополнительные публичные идентификаторы, которые и используются в адресах и т.п.

Добавлено через 7 минут
Пример:

GET /invoices - список накладных;
GET /invoices/1 - просмотр/редактирование накладной;
POST /invoices - удаление накладной (id передается в POST-параметре);
POST /invoices/1 - сохранение/обновление накладной.

Если сохранение/обновление не требуется, то для удаления можно использовать формат POST /invoices/1.
1
0 / 0 / 0
Регистрация: 19.05.2019
Сообщений: 4
10.02.2020, 16:44  [ТС]
Удаляются записи у меня ajax-запросом через POST. Просто id записи храниться в атрибуте value тега button, что мешает злоумышленнику зайти в режим разработчика, поменять значение value, и удалить другую запись?
0
1308 / 1000 / 232
Регистрация: 01.10.2018
Сообщений: 3,894
10.02.2020, 16:50
Цитата Сообщение от kiss_caelum Посмотреть сообщение
что мешает злоумышленнику зайти в режим разработчика, поменять значение value, и удалить другую запись?
Не понял. О каком режиме идет речь? И вы задали вопрос или нет?
0
0 / 0 / 0
Регистрация: 19.05.2019
Сообщений: 4
10.02.2020, 17:06  [ТС]
Режим разработчика в браузере. Я вывожу таблицу, в конце каждой строки условная кнопка удаления, и в каждой кнопке в атрибуте value храниться id строки, которую эта кнопка удаляет:
PHP
1
2
3
4
        <div class="btn-group">
          <a href="invoiceWS.php?id='.$arr['id'].'">+</a>
          <button value="'.$arr['id'].'">x</button>
        </div>
При нажатии на кнопку оправляется ajax-запрос с data, которая берет id непосредственно из value, т.е. $(this).attr("value");
Т.е. id хранится непосредственно в разметке, и если я войду в режим разработчика в браузере, найду этот элемент и вручную поменяю значение value, то при нажатии я удалю другую строку.
И вот собственно такой сценарий нужно обрабатывать? Или концепция хранения идентификаторов в разметке по дефолту не верна, и кнопки удаления нужно делать по другому?
0
1308 / 1000 / 232
Регистрация: 01.10.2018
Сообщений: 3,894
10.02.2020, 17:32
Цитата Сообщение от kiss_caelum Посмотреть сообщение
И вот собственно такой сценарий нужно обрабатывать?
Нет. В принципе можно связать id с CSRF-токеном, но в общем-то это лишнее. Можно даже CSRF-токен не использовать, особенно если не знаете, что это такое.

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

Добавлено через 9 минут
Цитата Сообщение от kiss_caelum Посмотреть сообщение
Или концепция хранения идентификаторов в разметке по дефолту не верна, и кнопки удаления нужно делать по другому?
Концепция верна. Целесообразность использования индивидуальных кнопок для каждой записи спорна, но в общем-то это вполне приемлемо.
1
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
10.02.2020, 17:37
как уже Вам ответили, можно и так и этак. все варианты допустимы. надо только в любом случае проверять данные формы на сервере перед записью в базу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.02.2020, 17:37
Помогаю со студенческими работами здесь

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

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

Работа с Word средствами VB (формирование таблиц на листе)
Привет всем! Такой вопрос, как заставить Word начертить таблицу, со столькими столбцами и строками которое к примеру заложено в выборе...

Сгенерированные элементы управления пропадают после обновления страницы
Ситуация: есть список пользователей, которым нужно раздавать права. При нажатии на пользователя появляется UpdatePanel RightsFullPanel, в...

Нужен элемент управления со сворачиваемым списком, похожий на панель элементов управления в VS
Нужен элемент управления со сворачиваемым списком, как панель элементов в VS, желательно с возможностью установки чекбокса есть набор...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru