Самописный интернет магазин

W
На сайте с 17.12.2012
Offline
44
1916

Пишу интернет магазин. Есть вопрос. Где лучше хранить информацию о корзине юзера, который не авторизирован.

Т.е. заходит гость и набирает товар и она хранится за этим пользователем какое-то время.

Изучаю движек престашоп не могу понять где они хранят эти данные. Предположение, что в сессиях но я не могу найти сессионных файлов и в дб, тоже ничего не ищется.

Подскажите пожалуйста как это правильно реализовывать.

[Удален]
#1

лучше всего на jquery, все сохраняем в куки и при необходимости легко от туда достаем данные

W
На сайте с 17.12.2012
Offline
44
#2

В куках не оч хочется хранить всю инфу

Я думаю в БД отдельная таблица с ID и данными в json а связь с необходимым полем по куке.

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

Есть ли какие то константные данные которые едины во всех браузерах установленных на одной машине? Я просто с этим до этого никогда не сталкивался

N1
На сайте с 14.05.2009
Offline
83
#3

Есть варианты:

1. куки - легко поставить куку на долгий период - на год, но могут блокироваться браузером

2. сессии в php с хранением в файлах - менее надежно т.к. это временные файлы в папке tmp, если не настраивать, то быстро удаляться, а если настроить долгий период жизни - будет создано слишком много файлов и это может повлиять на производительность.

3. сессии в php с хранением в базе данных - не применял

4. свой решение с хранением в базе данных

Нужно сказать, что все решения базируются на установке куки. Если нужно только хранить строчку из id товаров, то кука - это оптимальный вариант.

Если же нужна аналитика по анонимным посетителям (сколько их, что положили в корзину, как давно были, что еще смотрели) то нужно делать свое решение с использованем базы данных.

Если в cms имеются какие-то системы сбора статистики (недавно просмотренные товары), то можно попробывать их усовершенствовать.

---------- Post added 22-01-2014 at 16:42 ----------

wersiazz:
Можно ли как-то сделать так, чтобы эта корзина сразу подругажалась в любом браузере, в котором в последующем будет открывать сайт на определенной машине пользователя.
Есть ли какие то константные данные которые едины во всех браузерах установленных на одной машине? Я просто с этим до этого никогда не сталкивался

К сожалению, такой возможности нет.

Оптимизатор широкого профиля
W
На сайте с 17.12.2012
Offline
44
#4
ns13:
Есть варианты:
1. куки - легко поставить куку на долгий период - на год, но могут блокироваться браузером
2. сессии в php с хранением в файлах - менее надежно т.к. это временные файлы в папке tmp, если не настраивать, то быстро удаляться, а если настроить долгий период жизни - будет создано слишком много файлов и это может повлиять на производительность.
3. сессии в php с хранением в базе данных - не применял
4. свой решение с хранением в базе данных

Нужно сказать, что все решения базируются на установке куки. Если нужно только хранить строчку из id товаров, то кука - это оптимальный вариант.

Если же нужна аналитика по анонимным посетителям (сколько их, что положили в корзину, как давно были, что еще смотрели) то нужно делать свое решение с использованем базы данных.

Если в cms имеются какие-то системы сбора статистики (недавно просмотренные товары), то можно попробывать их усовершенствовать.

---------- Post added 22-01-2014 at 16:42 ----------



К сожалению, такой возможности нет.

Спс большое за инфу) А вот с кукой ид как лучше делать

Предположим я назову куку user_id , что лучше шифровать для ее значения?

предположим у меня в базе корзина будет под ид 5

Как лучше делать привязку куки к этому ид? user_id = 5 явно не стоит делать =) Или лучше изначатьно к бд обращаться по некоторому индификатору уже созданному заранее.

Т.е. для примера md5(time()) - это значение добавить и в куку и в бд как индификатор

N1
На сайте с 14.05.2009
Offline
83
#5

Ну почему же, нормальное решение.

5 - это связь между браузером и номером корзины в таблице.

Каждому следующему посетителю без куки user_id при добавлении в корзину ставьте куку user_id=6 (7,8...)

Если вам психологически будет удобнее - начните не с 5, а произвольного большого числа.

--

Я так понял, вас интерисует вопрос безопасности.

Стараюсь не усложнять систему, md5(time()) как идентификатор не лучше простой цифры, но добавляет доп. затраты на хранение в базе и лишние вычисления.

Раскрытия важной информации тут не усматриваю, даже более, для защиты от sql иньекции сделать intval для входного параметра удобнее и безопаснее, чем проверить валидность текстовой строки (md5).

IL
На сайте с 20.04.2007
Offline
418
#6
wersiazz:
Т.е. для примера md5(time()) - это значение добавить и в куку и в бд как индификатор

Пытаетесь изобрести велосипед.. Рекомендую прочитать про сессии.. http://www.php.net/manual/en/book.session.php

И отдельно - про http://www.php.net/manual/en/function.session-set-save-handler.php

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
Mik Foxi
На сайте с 02.03.2011
Offline
930
#7

Я в своем самописном шопе сделал куку в виде абракатабры сроком на пол года, которую не угадать и хранение прочих данных (адрес, заказанные товары и т.п.) в мемкешеде.

Антибот защита сайта от накрутки поведенческих, от спама, взлома и поиска xss, от хит и клик ботов, от парсинга и кражи контента, снижение нагрузки на сервер - https://antibot.cloud/ Вам все еще конкуренты генерят отказы?
bums
На сайте с 03.07.2006
Offline
415
#8
wersiazz:
Можно ли как-то сделать так, чтобы эта корзина сразу подругажалась в любом браузере, в котором в последующем будет открывать сайт на определенной машине пользователя.

В принципе можно, погугли "flash cookies"

Регистрация доменов RU/SU/РФ/COM/NET/ORG/etc (https://www.regnic.name/?sesign) у регистраторов reg.ru(<-naunet.ru), webnames.ru, r01.ru, nic.ru, PublicDomainRegistry.com, uk2group.com. Все в одном аккаунте и по низким ценам, RU/РФ от 152 руб. А так же SSL сертификаты SECTIGO(<-COMODO)
W
На сайте с 17.12.2012
Offline
44
#9
ivan-lev:
Пытаетесь изобрести велосипед.. Рекомендую прочитать про сессии.. http://www.php.net/manual/en/book.session.php
И отдельно - про http://www.php.net/manual/en/function.session-set-save-handler.php

мне в сессиях не нравится то что они трутся. увеличивать срок жизни тоже не хочу. т.к. был случай когда произошел какой то сбой и потом у меня этих сессий скопилось порядка 100 000 файлов в папке с сессиями. по поводу функции спасибо. полезная вещь

U
На сайте с 25.10.2006
Offline
71
#10

Сессии самый простой и надёжный вариант. Где, как и какое время их хранить вы можете сами решать, PHP это позволяет. Да и не понятно зачем нужно хранить информацию о товарах в корзине хранить неограниченное время? Если пользователь решил что то купить, то он оформит заказ сразу либо в течении нескольких дней.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий