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

W
На сайте с 17.12.2012
Offline
31
1946

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

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

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

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

[Удален]
#1

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

W
На сайте с 17.12.2012
Offline
31
#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
31
#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
435
#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
1186
#7

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

Антибот, антиспам, веб фаервол, защита от накрутки поведенческих: https://antibot.cloud/ (Зеркало: https://антибот.рф/ ) Форум на замену серчу: https://foxi.biz/
bums
На сайте с 03.07.2006
Offline
449
#8
wersiazz:
Можно ли как-то сделать так, чтобы эта корзина сразу подругажалась в любом браузере, в котором в последующем будет открывать сайт на определенной машине пользователя.

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

Недорогая регистрация и продление доменов RU/SU/РФ/COM/NET/ORG/и т.д. ( https://www.regnic.name/?sesign ) в РЕГРУ, РЕГТАЙМ, Р01, РУЦЕНТР. А так же хостинг и SSL сертификаты.
W
На сайте с 17.12.2012
Offline
31
#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 это позволяет. Да и не понятно зачем нужно хранить информацию о товарах в корзине хранить неограниченное время? Если пользователь решил что то купить, то он оформит заказ сразу либо в течении нескольких дней.

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