Здравствуйте. Пытаюсь реализовать загрузку изображений к новостной странице.
Как я делал логику загрузки:- Пользователь запрашивает страницу редактирования.
- Запускается actionEdit - из GET параметра берется id поста и ищутся изображения в папке "/images/{id поста}"
- Все найденные изображения выводятся через view, который принимает некоторые настройки, как размер элемента, содержащего картинку.
- Пользователь отсылает сайту новую картинку по ajax. ActionAjaxFileUpload должен получить изображение, проверить его и сохранить в ту же папку ("/images/{id поста}") с новым именем.
- После этого запускается render-view, который требует те же самые параметры (именно те, что были в пункте 2).
Проблема такая:
В пункте 4 по ajax я никак не могу получить id поста. Так как это ajax запрос, id по GET получить нельзя. По POST - записывать id куда-то в форму или в ajax-скрипт мне кажется нехорошо, т.к. пользователь может их изменить.
С пунктом 5 та же проблема, только с параметрами-опциями.
Чтобы обойти проблему, думаю использовать токены:
- При передаче страницы пользователю генерировать токен, сохранять опции в бд как {ключ: токен, значение: опции}.
- Сохранять этот токен на форму или скрипт.
- При получении картинки и токена, сайт обращается к бд, извлекает запись, если она есть и использует ее.
Но вариант с токенами мне почему-то не нравится.
Есть ли какие-нибудь нормальные способы передавать данные так, чтобы пользователь их не смог ни увидеть, ни изменить?
#Дополнительный вопрос:
Для загрузки изображения я использую модель Item, которая не должна использоваться нигде более. Для поиска и обработки загруженных изображений я использую класс-менеджер картинок (запускается в конроллере).
Получается так, что модель Item, которая взаимодействует с формой, также обязана передавать данные на форму и с формы, не касающиеся напрямую загрузки изображений (такие как токен например).
Мне кажется что так не должно быть, но не мог придумать ничего лучше. Что вы можете посоветовать по этому вопросу?