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

Как лучше хранить большую корзину (больше 140-170 товаров)?

11.04.2017, 10:28. Показов 4154. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сейчас храню корзину в куках (id-товара и количество).
Но при количестве товаров больше 140-170 они начинают пропадать из корзины (из-за объема куки 4Кб?).
Поэтому надо придумать как лучше хранить.

У меня возникли такие варианты:
1). 2-я кука, в которую добавлять товары, если в корзине 100 товаров.
Минус: теоретически в корзине может быть и больше 200 товаров.
2). хранить товары корзины в БД, а в куках сохранять ид корзины.
Минус: более медленная работа.
3). при количестве товаров в корзине меньше 100 - хранить корзину в куке,
а если больше 100, то в БД.
Минус: сложность реализации?

С удовольствием выслушаю Ваши замечания, предложения, критику.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.04.2017, 10:28
Ответы с готовыми решениями:

Как лучше хранить корзину в интернет-магазине?
Добрый день. Как считаете, как лучше хранить корзину в интернет-магазине? Лично мне в голову пришло три варианта: 1. В БД. Плюсы: не...

Как создать корзину товаров
Здравствуйте, помогите пожалуйста,нужно создать базу в Access, с такой идеей: есть таблицы с названием продуктов(типа: овощи, фрукты,...

Как лучше закодировать app.config connectionStrings? Или лучше не здесь хранить подключение к бд?
Я знаю, что app.config можно кодировать через консоль или же с помощью...

20
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
11.04.2017, 11:33
Я бы выбрал вариант 2. Ничего страшного от простого селекта не будет + кеширование никто не отменял.
0
0 / 0 / 0
Регистрация: 14.08.2016
Сообщений: 22
11.04.2017, 13:58  [ТС]
Цитата Сообщение от tarasalk Посмотреть сообщение
кеширование никто не отменял.
MySQL сам его будет делать?

Добавлено через 3 минуты
Цитата Сообщение от KRRU Посмотреть сообщение
2). хранить товары корзины в БД, а в куках сохранять ид корзины.
Цитата Сообщение от tarasalk Посмотреть сообщение
Я бы выбрал вариант 2.
тогда я думаю в куках лучше хранить не только ид корзины, но и общее количество товаров и сумму товаров в корзине, чтобы каждый раз не извлекать и не считать.
правильно? может что-то еще?
и надо еще придумать как ид генерировать (чтобы не повторился, и чтобы не делать ради него еще одну таблицу).

Добавлено через 2 минуты
и опять же само содержимое корзины как лучше хранить:
а). каждый товар - отдельная запись
б). в одной записи - список всех товаров с количеством (типа idтовара1:количество1;идтовара2:количест во2...)
0
 Аватар для Vas-e-na
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
12.04.2017, 16:56
Тоже в свое время ломал голову над этим, в итоге решил хранить корзину в сессии в виде сериализованного объекта.
0
0 / 0 / 0
Регистрация: 14.08.2016
Сообщений: 22
12.04.2017, 17:03  [ТС]
Цитата Сообщение от Vas-e-na Посмотреть сообщение
в итоге решил хранить корзину в сессии
но она же пропадет при закрытии браузера, а этого не хочется
0
 Аватар для Vas-e-na
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
12.04.2017, 17:07
Цитата Сообщение от KRRU Посмотреть сообщение
а этого не хочется
о вкусах не спорят...
0
 Аватар для N-Star
60 / 60 / 29
Регистрация: 03.11.2016
Сообщений: 292
Записей в блоге: 2
12.04.2017, 17:17
правильно настроенная сессия никуда не пропадает, хранить нужно в сессии - а сама сессия может хранится как угодно.
0
0 / 0 / 0
Регистрация: 14.08.2016
Сообщений: 22
12.04.2017, 17:38  [ТС]
Цитата Сообщение от N-Star Посмотреть сообщение
правильно настроенная сессия никуда не пропадает, хранить нужно в сессии - а сама сессия может хранится как угодно.
подскажите как хранить сессию, чтобы она не пропадала.
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
12.04.2017, 19:24
Цитата Сообщение от KRRU Посмотреть сообщение
Но при количестве товаров больше 140-170 они начинают пропадать из корзины (из-за объема куки 4Кб?).
Пользователи реально добавляют по 150 позиций в корзину? Может проще при добавлении 100-го товара выдать ошибку?
0
0 / 0 / 0
Регистрация: 14.08.2016
Сообщений: 22
12.04.2017, 21:18  [ТС]
Цитата Сообщение от Jodah Посмотреть сообщение
Пользователи реально добавляют по 150 позиций в корзину? Может проще при добавлении 100-го товара выдать ошибку?
Да. Мелкооптовая база, много заказывают мелкие магазинчики.
При наличии в корзине больше 100 товаров я показываю сообщение:
В вашей корзине уже столько-то позиций Рекомендуем оформить текущий заказ и начать формирование нового.
Но народ все равно набирает и больше 140 и больше 170. Неизвестно сколько бы набрали, больше 176-177 не получается.
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
12.04.2017, 21:58
KRRU, ок, а для добавления товара в корзину юзер должен быть зарегистрирован? Т.е. это внутренний каталог для зарегистрированных клиентов или как обычный интернет-магазин?
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
12.04.2017, 22:16
Хранить корзину в бд, а в куках идентификатор корзины (только не первичный ключ а какой-нибудь кеш, чтоб содержимое чужой корзины не подсмотреть)
0
0 / 0 / 0
Регистрация: 14.08.2016
Сообщений: 22
12.04.2017, 22:52  [ТС]
Цитата Сообщение от Jodah Посмотреть сообщение
а для добавления товара в корзину юзер должен быть зарегистрирован?
нет

Добавлено через 25 секунд
Цитата Сообщение от Jodah Посмотреть сообщение
обычный интернет-магазин?
да.

Добавлено через 49 секунд
Цитата Сообщение от Jewbacabra Посмотреть сообщение
только не первичный ключ а какой-нибудь кеш, чтоб содержимое чужой корзины не подсмотреть
увидели вы чужую корзину, и что это даст?
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
12.04.2017, 22:58
Цитата Сообщение от KRRU Посмотреть сообщение
увидели вы чужую корзину, и что это даст?
Это потенциальная уязвимость, я бы не стал делать покупки в магазине который каждому расскажет что и за сколько я покупал. Личные данные не должны показываться кому угодно по первому требованию.
0
13.04.2017, 01:47

Не по теме:

Цитата Сообщение от Jewbacabra Посмотреть сообщение
Это потенциальная уязвимость, я бы не стал делать покупки в магазине который каждому расскажет что и за сколько я покупал. Личные данные не должны показываться кому угодно по первому требованию.
Как же у вас выглядит поход в супермаркет с корзиной?

0
321 / 189 / 78
Регистрация: 04.10.2016
Сообщений: 809
13.04.2017, 02:35
если у пользователя заражено по, то покупку в любом случае узнают какую вы делаете. тут дело выбора пользователя и удобство. можно в конце концов придумать костыли-шифровки покупок (это алгоритм на усмотрения бек-энд.а).

я бы корзину покупок (отложенных покупок) хранил бы в локальном хранилище браузера. если же логи покупок - то естественно на стороне сервера в файлах (json) либо субд.
0
0 / 0 / 0
Регистрация: 14.08.2016
Сообщений: 22
13.04.2017, 08:25  [ТС]
Цитата Сообщение от Jewbacabra Посмотреть сообщение
я бы не стал делать покупки в магазине который каждому расскажет что и за сколько я покупал. Личные данные не должны показываться
личные данные не показываются

Добавлено через 1 минуту
Цитата Сообщение от N-Star Посмотреть сообщение
Как же у вас выглядит поход в супермаркет с корзиной?
наверное вместо корзины берет непрозрачный мешок

Добавлено через 1 минуту
Цитата Сообщение от Fart83 Посмотреть сообщение
если же логи покупок - то естественно на стороне сервера в файлах (json) либо субд.
оформленные заказы естественно хранятся в БД.

Добавлено через 50 секунд
Цитата Сообщение от Fart83 Посмотреть сообщение
я бы корзину покупок (отложенных покупок) хранил бы в локальном хранилище браузера.
это как именно?
0
321 / 189 / 78
Регистрация: 04.10.2016
Сообщений: 809
13.04.2017, 09:10
это как именно?
тот же json/массив вложить в localStorage

JavaScript
1
localStorage.setItem('myTrash', [{}]);
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
13.04.2017, 10:02
Цитата Сообщение от KRRU Посмотреть сообщение
увидели вы чужую корзину, и что это даст?
Дело не только в просмотре. Изменив id, можно получить доступ к чужой корзине и творить мелкие пакости - добавлять товары, менять их на похожие и т.п. Раздолье для недобросовестных конкурентов.

Вариант Jewbacabra оптимален. Хранить в БД можно так:
cart
cart_id token
1 9seioh084gh48g48ghs08gh40s80hg04
2 jsdf0gs04g08s4ghs0g840ghs408gh84

cart_product
cart_id product_id quantity
1 15 2
1 20 4
2 15 10
2 16 5

token отправляем юзеру в куки.
0
 Аватар для N-Star
60 / 60 / 29
Регистрация: 03.11.2016
Сообщений: 292
Записей в блоге: 2
13.04.2017, 11:14
и не забываем установить время жизни этого токина на 365 дней,, и еще в таблицу можно добавить дату что бы по ней чистить периодически бд
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.04.2017, 11:14
Помогаю со студенческими работами здесь

Как лучше сделать большую базу данных?
Уважаемые знатоки, подскажите, пожалуйста, как лучше сделать большую базу данных. Уже несколько дней сижу и перечитываю все возможные...

Как лучше вывести большую таблицу со множеством группировок?
Добрый день. Много перерыл информации, но так и не нашел каким способом лучше всего выводить большую таблицу. Задача - Есть 4 таблицы...

Как лучше реализовать большую таблицу? Массивом или по другому?
Здравствуйте, подскажите как правильно сделать вот такую таблицу? передавать 60 переменных в обработчик или как то можно массивом, если...

Как лучше хранить данные
Здравствуйте, у меня есть лист товаров, каждый из них может иметь разные способы доставки. Как это все лучше хранить? Создать отдельную...

Как лучше хранить массив?
Подскажите пожалуста, в чем лучше всего хранить огромный массив точек (там их миллионы). Заранее Спасибо


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru