[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как верно реализовать корзину?
vovabraga
Вопрос для опытных. Каким способом лучше всего реализовать карзину в интернет магазине ?

Я думаю, через $_SESSION.

Для счетчика товаров все понятно :

$_SESSION['goods_in_basket']


и каждый раз при добавлении товара ++ , при удалении --

но как сохранять динамический массив кодов товара и его кол-во в $_SESSION?

Может существует уже проверенный способ реализации корзины?
Спс за советы.



Спустя 17 минут, 29 секунд (14.07.2010 - 15:03) Basili4 написал(а):
очень просто при добавлении ложи все в теблицу тип ей укажи memory а в сессиии храни только индификатор пользователя и потом из таблицу все выберай.

Спустя 13 минут, 33 секунды (14.07.2010 - 15:17) linker написал(а):
В самом простом случае массив, где ключ элемента - идентификатор товара, а значение элемента - количество. Сохранить/восстановить - serialize()/unserialize()
В случае с бд, 100% в таблице будет скапливаться куча мусора, в случае сессии, корзина юзверя будет жить, пока живет его сессия. Плюс, в таблице надо хранить идентификатор юзверя (зарегистрирован и залогинен) или его сессии (гость).

Спустя 2 минуты, 26 секунд (14.07.2010 - 15:19) Basili4 написал(а):
linker
ну бей записи в случаи покупки отмены. не отчистил пользюук корзину вышел вернулся а у него козина не пустая а с тем что он прошлый раз выбрал красота

Спустя 6 минут, 56 секунд (14.07.2010 - 15:26) linker написал(а):
Basili4, ну юзверь просто закрыл браузер и ничего не нажимал, корзина так и осталась в таблице валяться. Это хорошо только для зареганых юзверей, для всех остальных будет скапливатсья ненужный мусор. Просто для примера:
$Recycle = unserialize($_SESSION['Recycle']);
// Не забываем, ключ - это ID товара, а значение - количество товара
$Result = mysql_query("select * from tovars where tovar_id in (" . join(',', array_keys($Recycle)) . ")");
while($Tovar = mysql_fetch_assoc($Result))
{
echo 'Товар: ' . $Tovar['tovar_name'] . ' в количестве ' . $Recycle[$Tovar['tovar_id']] . ' шт.<br>';
}

Спустя 29 секунд (14.07.2010 - 15:26) KaFe написал(а):
В сессиях можно сохранять массивы
$_SESSION[arr] =array (Philips, Unit, Hp, Samsung);
print_r($_SESSION[arr]);

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

Спустя 44 секунды (14.07.2010 - 15:27) linker написал(а):
KaFe, тем более не вижу причин мутить с базой данных

Спустя 1 минута, 55 секунд (14.07.2010 - 15:29) Basili4 написал(а):
linker
дык добавляй запись в таблу только при добавлении товара в корзину и не будет мусора

Спустя 12 секунд (14.07.2010 - 15:29) KaFe написал(а):
linker да я о том же, просто Basili4 все хочет решить через БД, это я уже давно заметил wink.gif Даже кэширование страниц через БД, но не будем вспоминать события прошедших дней wink.gif

Спустя 2 минуты, 33 секунды (14.07.2010 - 15:32) Basili4 написал(а):
KaFe
ага а ты через все кроме БД я тоже заметил просто есть инфа котору надо хранить в бд вот корзина это та самая инфа smile.gif

Спустя 21 секунда (14.07.2010 - 15:32) KaFe написал(а):
Комментирую сам себя.
Цитата (KaFe @ 14.07.2010 - 12:26)
А лучше вообще с помощью куков все делать, пусть пользователи хранят сами у себя что заказали, а потом из данного списка оформляют заказ.

Но тут главное продумать защиту.

Спустя 1 минута, 10 секунд (14.07.2010 - 15:33) linker написал(а):
Basili4, ну вот представь, я зашел на озон, выбрал книжичек, положил их в корзину, а потом передумал, потому что нашел в другом месте за чуть дешевле. Вы думаете я полезу в корзину очищать ее, нет, я просто закрою страницу озона и все. Спрашивается, что будет с данными, которые я поместил в свою корзину? В случае с бд, они так и будут там валяться, а так как я не зареган на озоне, то в следующий раз будет создана еще одна корзина с новыми данными, которые также имеют все шансы не удалиться.

Спустя 2 минуты, 9 секунд (14.07.2010 - 15:35) Basili4 написал(а):
можно указать время хранения и бить данные устаревшие данные но я тут подумал наверное ты прав. лучше в сессию

Спустя 1 минута, 27 секунд (14.07.2010 - 15:37) linker написал(а):
Basili4, именно, придется еще отдельно мутить сервис, который по крону или еще как будет ходить и чистить таблицу от левака, нагружая мускул работой, от которой можно спокойно уйти используя сессии.

Спустя 44 секунды (14.07.2010 - 15:38) KaFe написал(а):
Цитата (Basili4 @ 14.07.2010 - 12:32)
просто есть инфа котору надо хранить в бд вот корзина это та самая инфа

Я не думаю. Очень это уж не стабильная информация. В БД и фалах, хранят информацию, которая изменяется относительно редко. Я книжку по "теории баз данных" читал там практически так и написано.

Или еще такое примерно, в таблицах надо хранить факты описывающие определенный субъект.

Не факт что юзерь купит книгу wink.gif

Спустя 9 минут, 2 секунды (14.07.2010 - 15:47) vovabraga написал(а):
думаю реализация через БД, это засорение базы только, вот в сессиях - это логично. Скорее всего подойдет реализация динамического массива. Может есть примеры или ссылки?

Спустя 26 минут, 43 секунды (14.07.2010 - 16:13) inpost написал(а):
Ну так если человек на пол часа отвлечется, то все, кранты сессии! А человек выбрал целый список товара, ушел кушать, вернулся - а все пусто, или перепад напряжения был, или по случайности нажал закрыть окно.
Может все-таки в таблице, а id хранить в кукисах?
А кроном чистить в 3-5 утра, когда активности на сайте нету, и нагрузка на сервер не страшна

Спустя 2 часа, 8 минут, 35 секунд (14.07.2010 - 18:22) vovabraga написал(а):
А сессия сколько хранится времени?

Спустя 1 минута, 12 секунд (14.07.2010 - 18:23) Ice написал(а):
по умолчанию 24 минуты.

Народ, как смотрите на хранение массива товаров в куках с включенным параметром httponly?

Спустя 5 минут, 43 секунды (14.07.2010 - 18:29) vovabraga написал(а):
Продлить можно? Через куки есть свои подводные камни?

Спустя 5 минут, 9 секунд (14.07.2010 - 18:34) vovabraga написал(а):
Читаю, с куками тоже есть свои траблы sad.gif

Спустя 11 минут, 45 секунд (14.07.2010 - 18:46) inpost написал(а):
Чем меньше даёшь пользователю, тем меньше проблем!
С таблицей безопаснее всего было бы, если конечно стараться. Кукисы хранятся на стороне клиента, а он может с ними делать все что угодно! Вплоть даже до изменений.

Спустя 1 час, 27 минут, 16 секунд (14.07.2010 - 20:13) Ice написал(а):
Шифрование кук происходит с закрытым ключом, так что изменение такой куки не так-то просто.

Спустя 11 минут, 35 секунд (14.07.2010 - 20:25) Basili4 написал(а):
Ice
а ключ выберается по какому алгоритму если есть возможность предугадать ключь грош цена этому алгоритму

Спустя 30 минут, 4 секунды (14.07.2010 - 20:55) Ice написал(а):
сам проставляешь хоть 'supersecretkey'

$iv_size = mcrypt_get_iv_size( MCRYPT_BLOWFISH, MCRYPT_MODE_ECB );
$iv = mcrypt_create_iv( $iv_size, MCRYPT_RAND );
$key = "Никто ничего не узнает";
$text = "Завтра в сквере, возле театра. В 5."; //(с)

// поехали

$crypttext = mcrypt_encrypt( MCRYPT_BLOWFISH, $key, $text, MCRYPT_MODE_ECB, $iv );
print $crypttext; // ��s]1J�*��"l*��K�=�1%H�ʂ��bEUo!��[�cyfh|NZsh��$BS:C4I����

// расшифровываем

$decrypttext = mcrypt_decrypt( MCRYPT_BLOWFISH, $key, $crypttext, MCRYPT_MODE_ECB, $iv );
print $decrypttext; // Завтра в сквере, возле театра. В 5.

Спустя 13 часов, 10 минут, 31 секунда (15.07.2010 - 10:05) vovabraga написал(а):
Цитата (Ice @ 14.07.2010 - 17:55)
сам проставляешь хоть 'supersecretkey'

$iv_size = mcrypt_get_iv_size( MCRYPT_BLOWFISH, MCRYPT_MODE_ECB );
$iv = mcrypt_create_iv( $iv_size, MCRYPT_RAND );
$key = "Никто ничего не узнает";
$text = "Завтра в сквере, возле театра. В 5."; //(с)

// поехали

$crypttext = mcrypt_encrypt( MCRYPT_BLOWFISH, $key, $text, MCRYPT_MODE_ECB, $iv );
print $crypttext; // ��s]1J�*��"l*��K�=�1%H�ʂ��bEUo!��[�cyfh|NZsh��$BS:C4I����

// расшифровываем

$decrypttext = mcrypt_decrypt( MCRYPT_BLOWFISH, $key, $crypttext, MCRYPT_MODE_ECB, $iv );
print $decrypttext; // Завтра в сквере, возле театра. В 5.

почему тогда через куки не хранить корзину, зачем использовать БД?

Спустя 1 час, 49 минут, 14 секунд (15.07.2010 - 11:54) inpost написал(а):
vovabraga а кто тебе сказал, что не стоит через куки? Можно и так и так.

Спустя 44 минуты, 57 секунд (15.07.2010 - 12:39) vovabraga написал(а):
Цитата (inpost @ 15.07.2010 - 08:54)
vovabraga а кто тебе сказал, что не стоит через куки? Можно и так и так.

Начал писать через куки, но не вижу смысла держать id товаров и кол-во в базе

Спустя 20 минут, 26 секунд (15.07.2010 - 13:00) Ice написал(а):
в базе каталог товаров держи

Спустя 1 час, 2 минуты, 46 секунд (15.07.2010 - 14:03) vovabraga написал(а):
Цитата (Ice @ 15.07.2010 - 10:00)
в базе каталог товаров держи

Это понятно smile.gif Уже реализовал на sql и базу клиентов, разделов тоже. wink.gif
Быстрый ответ:

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