Возможность работы с определённым ID пользователя в строке, выведенной через foreach
Возникла проблема. Через foreach
я перебираю массив с неверифицированными участниками, имеющие id
, nickname
и email
. По нажатию на кнопки acceptUser
/ declineUser
я должен отправлять POST-запрос на страницу /api/accept_request.php
/ /api/decline_request.php
, отправляя в теле запроса свой id ($adminId
в коде), и id пользователя, в строке которого я нажимаю на соответствующую кнопку. На данный момент я с помощью JavaScript передаю id юзера через атрибут data-userid и обрабатываю запрос через fetch. Однако проблема заключается в том, что этот самый атрибут можно спокойной изменить через код элемента и код начнёт использовать уже изменённый id. Как в моём примере перебора пользователей через foreach
можно реализовать подобный функционал? Предполагаю, что каждую кнопку нужно обернуть в форму на сопутствующие action
, однако как мне передавать id именно того пользователя, напротив которого я использую эти кнопки?
Мой код:
<section class="section">
<h1 class="section__title">Верификация пользователей</h1>
<p class="section__subtitle">На данный момент <strong><?php echo count($unverifyUsers); ?></strong> чел. ждут верификации аккаунта.</p>
<div class="verify-list">
<?php foreach ($unverifyUsers as $unverifyUser) : ?>
<div class="verify-row">
<p>Пользователь: <strong><?php echo $unverifyUser['nickname']; ?></strong>. Почта: <strong><?php echo $unverifyUser['email']; ?></strong>.</p>
<div class="verify-actions">
<button id="acceptUser" data-userid="<?php echo $unverifyUser['id'] ?>" class="verify-action verify-action--primary">Подтвердить</button>
<button id="declineUser" data-userid="<?php echo $unverifyUser['id'] ?>" class="verify-action verify-action--gray">Отклонить</button>
</div>
</div>
<?php endforeach ?>
</div>
</section>
Ответы (1 шт):
На стороне клиента легко можно посмотреть код .js файла и узнать какие данные, в каком формате и куда отправлять запрос, это небезопасно
Самое популярное решение на данный момент это использование токенов jwt, к примеру можете прочитать эту статью
Есть множество библиотек для удобства работы
Если кратко: метод логина генерирует токен и возвращает его, дальше все запросы подписываются этим токеном, токен не нужно хранить в базе данных, но токен должен "сгорать" по времени, и создаваться новый, к примеру каждые 15 минут.
Таким образом можно обеспечить безопасность приложения