Jump to content
  • 0

Подскажите с логикой корзины для i-магазина


Alexey Menshikov
 Share

Question

Пишу интернет магазин. Дошел до момента работы с корзинкой.

Вижу логику такой:

1) зашел посетитель на сайт, выдаю ему сразу куку с сессией (если ее нет) для его идентификации

2) ходит он бродит по каталогу, когда что-то захотел добавить в корзинку, выдаю еще одну куку с видом типа "код товара=количество товара"

3) если еще что-то захотел добавить, меняю куку уже существующую на "код товара=к.т&код товара2=к.т.2"

ну дальше уже регистрация/авторизация и заказ

правильно ли это или где-то ошибся?

Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0

На клиенте такие вещи лучше не хранить. Сессия в БД, и сессия для идентификации на юзере - самое оно.

Ну а как реализовывать эти сессии - вопрос другой. Потому как сессия обычно имеет время жизни, а удалять корзину только потому, что юзер отошёл от компа на пару часов (а в e-магазинах сессии очень долго хранить не стоит), не очень хорошая идея.

Как вариант, некая таблица с полями ид юзера, ид товара, количество товара.

При каждом добавлении товара в корзину - идёт туда запись. Создаётся или редактируется заказ - идёт удаление или правки.

Link to comment
Share on other sites

  • 0

Я примерно в таком варианте делал:

Корзина не авторизованного пользователя хранится в куке в виде массива. Причем надо помнить, что товары могу отличаться не только по id, но и по другим св-вам, например ,цвет, размер и т.д.

setcookie( 'basket', array('id1'=>'count1', 'id2'=>'count2'), time()+86400 );

У авторизованного пользователя корзину можно хранить в его же профиле в поле типа TEXT в виде JSON. (ну кому хочется, можно для этого завести отдельную таблицу, правда это сулит лишнюю нагрузку на БД, а БД -- это святое)))

Если пользователь зашел не авторизованный, добавил товар, а потом авторизовался, то корзина из куки объединяется с корзиной из профиля и записывается в профиль. В куках, соответственно, очищается.

Если пользователь вышел с сайта, то корзина в куках тоже должна быть пуста.

Хранить корзины всех гостей у себя в базе не целесообразно, т.к. если зайдет на сайт вашего заказчика 10 000 ботов и закажут каждый по 10 товаров, то в таблице уже окажется 100 000 строк мусора... А если больше... а если Ваш клиент не на VDS ?

Link to comment
Share on other sites

  • 0
Хранить корзины всех гостей у себя в базе не целесообразно, т.к. если зайдет на сайт вашего заказчика 10 000 ботов и закажут каждый по 10 товаров, то в таблице уже окажется 100 000 строк мусора... А если больше... а если Ваш клиент не на VDS ?

Ну и что? Есть менеджер интернет магазина, который может (и должен) управлять заказами - в том числе удалять такое вот вещи, если они вообще будут (в чём я очень сильно сомневаюсь).

Link to comment
Share on other sites

  • 0

я не думаю что будет 10 000 который будут заказывать по столько товаров, в любом случае можно будет сделать ограничение по 5 товарам, это уже в два раза меньше...

Edited by vvsh
Link to comment
Share on other sites

  • 0
я не думаю что будет 10 000 который будут заказывать по столько товаров, в любом случае можно будет сделать ограничение по 5 товарам, это уже в два раза меньше...

Вот это точно бред. Ты бы пошёл покупать что-либо в магазин, если бы после того, как ты взял 5 товаров тебе надо было бы пойти на кассу, расплатиться и снова заходить в магазин, чтобы купить остальное? Я бы нет. И в таком интернет-магазине я бы тоже не стал бы ничего заказывать.

Link to comment
Share on other sites

  • 0
Вот это точно бред. Ты бы пошёл покупать что-либо в магазин, если бы после того, как ты взял 5 товаров тебе надо было бы пойти на кассу, расплатиться и снова заходить в магазин, чтобы купить остальное? Я бы нет. И в таком интернет-магазине я бы тоже не стал бы ничего заказывать.

ну да, ты прав, в этом есть свои минусы...

тогда нужно выбирать другой способ хранения информации...

Link to comment
Share on other sites

  • 0
Да нормально хранить в базе. Для защиты от ботов всегда помогала каптча. А 100000 записей в базе - не так уж и много, если она нормально сделана.

Да в базе нормально полезную информацию хранить. А мусор-то тебе зачем?

Link to comment
Share on other sites

  • 0
Я примерно в таком варианте делал:

Корзина не авторизованного пользователя хранится в куке в виде массива. Причем надо помнить, что товары могу отличаться не только по id, но и по другим св-вам, например ,цвет, размер и т.д.

setcookie( 'basket', array('id1'=>'count1', 'id2'=>'count2'), time()+86400 );

С массивом получилось бы удобно, но т.к. у меня идет добавление в корзину по 1 товару, у меня не получается сделать через массив.

Я плохо знаю работу с массивами.

По логике добавления одной еденицы в массив:

setcookie( 'basket', array('id1'=>'count1'), time()+86400 );

ругается

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy