[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как защититься в такой ситуации
Страницы: 1, 2
lop_atin
Здравствуйте, у меня сайт, что-то типо интернет магазина, так вот на одной из страниц появляются 10 товаров (в разброс). У каждого товара есть свой блок, в нем: фото, инфо, название и кнопка заказать. Все работает на ajax'e... так вот, чтобы php обработчик мог определить по какой кнопке был произведет "click" я поставил input с tyрe='hidden' и в нем вывожу значение id (товара).

<input type='hidden' value='13' id='id_tovara' name='id_tovara'>


Все работает хорошо, но проблема в том, что если человек зайдет в код сайта (ПКМ - Посмотреть код элемента) и там поменяет id товара в поле, которое скрыто, а потом нажмет кнопку "заказать", но товар будет заказан по другой цене.

Что в этом случае посоветуете? Как сделать так, чтобы id товара оставался прежним?

Буду оочень благодарен!
Zzepish
Юзай сессии
lop_atin
Цитата (Zzepish @ 2.07.2013 - 23:38)
Юзай сессии

В смысле? Как их сюда прилепить-то? smile.gif А если у меня 1000 товаров, всем нужно сессию?


Я вот так вот думал:
обрабатывать md5 номер id и даже если и поменяют его, то вряд ли попадут на существующий... И если не попадут, то выдавать ошибку типо "такого товара нет".

Но проблема в том, что помимо поля id у меня есть еще поле "акция", то есть если товар по акции, то скидка 10%... И там только два значения 0 (без акции) и 1 (есть акция). В таком случаи md5 не поможет, ведь можно будет посмотреть значения товара со скидкой и скопировать в товар без скидки... sad.gif И дело в том, что из БД значение акции вытащить нельзя... Можно только скрытым полем.
FatCat
Ты же передаешь не цену, а айдишник товара?
Подмена айдишника приведет к изменению товара; а уж на другой товар будет и другая цена.

_____________
Бесплатному сыру в дырки не заглядывают...
lop_atin
Цитата (FatCat @ 2.07.2013 - 23:44)
Ты же передаешь не цену, а айдишник товара?
Подмена айдишника приведет к изменению товара; а уж на другой товар будет и другая цена.

Хорошо, а как быть со второй частью вопроса (читай третий коммент, последний абзац).
Zzepish
Не так прочел. Ну, если чувак подменит- его проблемы. Никто его не просил.
lop_atin
Цитата (Zzepish @ 2.07.2013 - 23:51)
Не так прочел. Ну, если чувак подменит- его проблемы. Никто его не просил.

Неее.. я просто описал вам в виде "товаров", а на самом деле там фишка в другом, если поменяют, то могут сильно "наворится", например товар за 10 000рублей, купить за 1 руб.
Zzepish
lop_atin
ат грамотная архитектура базы? посылать id товара на скрипт. Скриптом проверять, что да как, а потом обрабатывать все
OleKh
в БД должно быть прописано акционный товар или нет и когда приходит заказ на этот товар, цена должна формироваться по данным из БД, а не по тем данным (реальным или фиктивным) что присылает покупатель
paul85
Передавать такие вещи в userspace не стОит. Только в качестве флага, чтобы отображать значок акции возле товара. Все вещи, связанные со скидками и прочим должны храниться на сервере. Либо в сессии (что в данном случае не есть хорошо. Объем.) Либо в БД.

В случае с md5 вы ни за что не определите его изначального значения. Только прогонять все 1000 ID, делать по ним md5 и сравнивать шифрограммы. Но это вообще кошмар а не решение...
lop_atin
Цитата (OleKh @ 3.07.2013 - 00:02)
в БД должно быть прописано акционный товар или нет и когда приходит заказ на этот товар, цена должна формироваться по данным из БД, а не по тем данным (реальным или фиктивным) что присылает покупатель

Дело в том, что на главной "товары" со скидкой и поле "акция" (скрытое) у них равно 1.

Но если этот товар найти уже не на главной, а в разделах, то скидки не будет и поле "акция" (скрытое) будет равно 0.

Вот почему в БД нельзя ставить столбец по акции товар или нет..
Splaer
можно попробовать сделать дополнительное поле hidden в котором, допустим, будет md5(значение+имя) вашего поля и при "входе" проверять.

получится что-то такое:

<input type='hidden' value='13' id='id_tovara' name='id_tovara'>
<input type='hidden' name='control_sum' value='q848dq8tnrm8ebwnef5'>
glock18
Цитата (lop_atin @ 2.07.2013 - 19:35)
Все работает хорошо, но проблема в том, что если человек зайдет в код сайта (ПКМ - Посмотреть код элемента) и там поменяет id товара в поле, которое скрыто, а потом нажмет кнопку "заказать", но товар будет заказан по другой цене.


смешно даже, если честно. цена то у вас в базе должна быть, и всегда должна считаться непосредственно перед покупкой
OleKh
в любом случае товар должен иметь в БД значение акция есть/нет, иначе как определить какой товар акционный, а какой нет

далее, просто можно сделать условие "если на главной" - акция, в других нет акции.

вообще наверное проще добавить таблицу акционных товаров на главной, чем придумывать ахкак не применять акции на лругих страницы
glock18
Цитата (lop_atin @ 2.07.2013 - 20:09)
Но если этот товар найти уже не на главной, а в разделах, то скидки не будет и поле "акция" (скрытое) будет равно 0.


странно. Сами даете возможность заказывать по меньшей цене, и тут же пытаетесь от нее защититься. Зачем? Какой вам прок от этого вообще?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.