Добрый день. Есть разметка
<div>
<h1>Статья 1</h1>
<form action="#" method="POST">
<button type="submit" name="sandId">Добавить статью</button>
</form>
</div>
<div>
<h1>Статья 2</h1>
<form action="#" method="POST">
<button type="submit" name="sandId">Добавить статью</button>
</form>
</div>
Все данные в разметку выводятся средствами php, вытягиваются из базы. У каждой статьи есть свой уникальный номер. Нужно сделать так чтобы при нажатии на кнопку sandId в файл- обработчик передавался id той записи,к которой прикреплена форма. Пытался сделать так:
<div>
<h1>Статья 1</h1>
<form action="#" method="POST">
<input type="hidden" name="id" value="1"/>
<button type="submit" name="sandId">Добавить статью</button>
</form>
</div>
<div>
<h1>Статья 2</h1>
<form action="#" method="POST">
<input type="hidden" name="id" value="1"/>
<button type="submit" name="sandId">Добавить статью</button>
</form>
</div>
Но этот вариант мне не подходит, значения скрытых полей, а точнее id статей, берутся из базы, их не должен видеть пользователь. И иметь возможность изменять их прямо в браузере он тоже не должен.
Можно написать уравнение, которое бы при генерации страницы с формами вставляла в формы не настоящие данные идентификаторов записей из бд, а какие-то условные строки\цифры. Когда бы данные приходили от пользователя, то же уравнение высчитывало бы всё в обратном порядке. Важно добавить какую-то "соль", которая бы точно гарантировала, что расшифрованные данные относятся к какой-либо записи. Например, дату создания записи в БД. Но проще использовать шифрование. Или использовать логику хеширования паролей (проще всего).
Например, берём из базы идентификатор записи и дату-время создания этой записи (в качестве "соли"). Соединяем их вместе, приводим, например, к виду 174_2017-23-02_23-00 (лучше всего ИД записи писать не ожидаемо в начале, а где-нибудь в другом месте - между датой и временем. Пользователи ведь не знают, что и как вы тут крутите).
Дальше используем password_hash()
(документация). Получаем хэш вида $2y$10$3KYZHiFhKHNB7.yJUGXJf.zR6Z8uc4.pdPsKbTTMDoApsp8CBY5qe
, который используем для вывода пользователю в скрытое поле.
При получении данных от пользователя сверяемся с тем, что получили, с тем, что должно быть. Например, с помощью password_verify()
(документация)
Если пользователь захочет что-то подправить у себя на странице, то он не сможет узнать что это за данные и не удастся ему ничего сделать. Смысл, надеюсь, ясен.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В опциях определено что linecap: round, но концы все равно не скругленные
Есть ли существенная разница между этими двумя версиями библиотекПросто по ExtJS 4 существует мануал на русском языке, с помощью которого я смогу...
У меня на странице может быть очень много слайдеровКак сделать так, что бы не копировать один и тот же код множество раз, где мне надо просто...