Cookie - размер

2People

Новичок
Cookie - размер

Всем привет.

У меня корзина товаров, записываю туда товары.
Хранятся так $_COOKIE["basket"][] = serealoze();

При добавлении от 2-4 одинаковых товаров (т.е. 2-4 раза совершить одинаковые действия) перестаёт открываться сайт, даже html странички.

На нескольких хостингах пробовал, там просто перестаёт открываться сайт, наконец удалось вызвать эту ошибку на локалхосте!

Bad Request
Your browser sent a request that this server could not understand.
Size of a request header field exceeds server limit.

Читал что ограничение размера куки - 20КБ , но т.к. на локалхосте при тех же данных пришлось добавить 6-7 товаров, видимо эта величина не фиксирована.

Как же мне хранить эти данные??? Писать в БД не получится, т.к. у меня авторизация не обязательна и база быстро захламится.
 

denver

?>Скриптер
В 20Кб влезет довольно много товаров, вы туда еще и описания загоняете что-ли?
 

2People

Новичок
Автор оригинала: denver
В 20Кб влезет довольно много товаров, вы туда еще и описания загоняете что-ли?
Это одна запись:

a%3A10%3A%7Bs%3A12%3A%22extra_fields%22%3Ba%3A3%3A%7Bi%3A0%3Ba%3A6%3A
%7Bs%3A5%3A%22title%22%3Bs%3A8%3A%2280%F580+%F1%EC%22%3Bs%3A4%3A%22name
%22%3Bs%3A4%3A%22h_sm%22%3Bs%3A10%3A%22group_name%22%3Bs%3A6%3A
%22Razmer%22%3Bs%3A11%3A%22group_title%22%3Bs%3A7%3A%22%D0%E0%E7%EC
%E5%F0%3A%22%3Bs%3A5%3A%22value%22%3Bs%3A3%3A%22450%22%3Bs%3A5%3A
%22level%22%3Bi%3A2%3B%7Di%3A1%3Ba%3A6%3A%7Bs%3A5%3A%22title%22%3Bs%3A9
%3A%22%ED%E0%EF%EE%EB%FC%ED%E0%FF%22%3Bs%3A4%3A%22name%22%3Bs%3A9
%3A%22napolnaya%22%3Bs%3A10%3A%22group_name%22%3Bs%3A17%3A%22Tip_razmescheniya
%22%3Bs%3A11%3A%22group_title%22%3Bs%3A15%3A%22%D2%E8%EF+%F0%E0%E7%EC%E5
%F9%E5%ED%E8%FF%3A%22%3Bs%3A5%3A%22value%22%3Bs%3A3%3A%22150%22%3Bs
%3A5%3A%22level%22%3Bi%3A2%3B%7Di%3A2%3Ba%3A6%3A%7Bs%3A5%3A%22title%22
%3Bs%3A7%3A%22%E1%EE%EB%FC%F8%E0%FF%22%3Bs%3A4%3A%22name%22%3Bs%3A8
%3A%22bolshaya%22%3Bs%3A10%3A%22group_name%22%3Bs%3A4%3A%22Vazy%22%3Bs%3A11
%3A%22group_title%22%3Bs%3A5%3A%22%C2%E0%E7%FB%3A%22%3Bs%3A5%3A%22value%22%3Bs%3A6
%3A%22400.50%22%3Bs%3A5%3A%22level%22%3Bi%3A2%3B%7D%7Ds%3A8%3A%22quantity%22%3Bs%3A1
%3A%221%22%3Bs%3A2%3A%22id%22%3Bs%3A2%3A%2266%22%3Bs%3A3%3A%22pid%22%3Bs%3A2%3A
%2229%22%3Bs%3A4%3A%22name%22%3Bs%3A7%3A%22%C8%EA%E5%E1%E0%ED%E0%22%3Bs
%3A9%3A%22path_name%22%3Bs%3A7%3A%22ikebana%22%3Bs%3A3%3A%22img%22%3Bs%3A4
%3A%22.gif%22%3Bs%3A5%3A%22img_s%22%3Bs%3A6%3A%22_s.gif%22%3Bs%3A8%3A%22add_time
%22%3Bs%3A19%3A%222006-08-16+18%3A29%3A42%22%3Bs%3A5%3A%22price%22%3Bs%3A7%3A%221550.50%22%3B%7D

Это то, что получается после сереализ
 

BRat

o_0
было бы намного лучше хранить в куках только идентификаторы вещей и кол-во экземпляров
 

denver

?>Скриптер
2People
Ага, это удобно хранить цены в куках пользователя? :)
 

2People

Новичок
Автор оригинала: BRat
было бы намного лучше хранить в куках только идентификаторы вещей и кол-во экземпляров
Так не получится, т.к. товары составные (из частей), и какие части в товаре будут заказаны неизвестно.
И цена зависит от комплектации товара.

Чтобы понятнее.
В БД записан товар и в отдельном поле в XML его комплектация.
При оформлении заказа можно выбрать например: Мобильный телефон с зарядкой (не не заказывать коробку) или телевизок+коробка от него(но без пульта)
 

denver

?>Скриптер
Кроме ID товара(запчасти, коробки и т.п) и количества ничего не нужно
 

BRat

o_0
2People
у каждой части есть же свой id вероятно? Храни тогда так -
$_COOKIE[$item_id] = array('parts'=>array($part1_id, $part2_id,...), 'count_of_items'=>1);
 

2People

Новичок
Автор оригинала: 2People
Так не получится, т.к. товары составные (из частей), и какие части в товаре будут заказаны неизвестно.
И цена зависит от комплектации товара.

Чтобы понятнее.
В БД записан товар и в отдельном поле в XML его комплектация.
При оформлении заказа можно выбрать например: Мобильный телефон с зарядкой (не не заказывать коробку) или телевизок+коробка от него(но без пульта)
Вот что там хранится - расшифровка:
PHP:
Array
(
    [extra_fields] => Array
        (
            [0] => Array
                (
                    [title] => 80х80 см
                    [name] => h_sm
                    [group_name] => Razmer
                    [group_title] => Размер:
                    [value] => 450
                    [level] => 2
                )

            [1] => Array
                (
                    [title] => напольная
                    [name] => napolnaya
                    [group_name] => Tip_razmescheniya
                    [group_title] => Тип размещения:
                    [value] => 150
                    [level] => 2
                )

            [2] => Array
                (
                    [title] => большая
                    [name] => bolshaya
                    [group_name] => Vazy
                    [group_title] => Вазы:
                    [value] => 400.50
                    [level] => 2
                )

        )

    [quantity] => 1
    [id] => 66
    [pid] => 29
    [name] => Икебана
    [path_name] => ikebana
    [img] => .gif
    [img_s] => _s.gif
    [add_time] => 2006-08-16 18:29:42
    [price] => 1550.50
)
-~{}~ 24.09.06 23:49:

могу убрать строки типа [name] => bolshaya

И каждый раз повторно переврдить в транслит, т.е. вместо хранения этих данныи и их вывода - заново их создавать :(

Но от этого получится не 2-4 записи, а .... допустим 4-8, но это не выход.

-~{}~ 25.09.06 00:21:

Поправка про куки:
There are limitations on the number of cookies that a client can store at any one time. This is a specification of the minimum number of cookies that a client should be prepared to receive and store.

* 300 total cookies
* 4 kilobytes per cookie, where the name and the OPAQUE_STRING combine to form the 4 kilobyte limit.
* 20 cookies per server or domain. (note that completely specified hosts and domains are treated as separate entities and have a 20 cookie limitation for each, not combined)

Подскажите, как же лучше хранить данные, если куки - мало, сессии - не подходят для этих целей, т.к. посетитель может зайти на сайт через несколько месяцев!?

Остаётся хранить сформированый заказ в БД, а идентификатор заказа в куки. Но тогда проблема в том, что авторизация не обязательна и база может очень сильно захламиться!
 

Фанат

oncle terrible
Команда форума
Читал что ограничение размера куки - 20КБ
ЧЕТЫРЕ килобайта влезает в куки. ЧЕТЫРЕ! а не двадцать.
Остаётся хранить сформированый заказ в БД, а идентификатор заказа в куки. Но тогда проблема в том, что авторизация не обязательна и база может очень сильно захламиться!
А от нас ты чего хочешь, болезный?
 

2People

Новичок
Автор оригинала: Фанат
ЧЕТЫРЕ килобайта влезает в куки. ЧЕТЫРЕ! а не двадцать.
Хз где я прочитал про 20, решил удостовериться и увидел что 4. Я это уже написал.
А от нас ты чего хочешь, болезный?
Мжет быть есть провереные способы долго хранить более 4КБ
+ в моём случае (когда нет обязательной регистрации) не рискуя БД.

Или то, что я написал выше - единственный выход? Может быть будут рекомендации?
 

denver

?>Скриптер
2People
Залезь на какой-то онлайн магаз и накидай в корзину, посмотри что и сколько упадет в куки, и не думай никогда что твой магазин особенный. Случай с тобой особенный, но не система заказа и ее ньюансы.
 

Фанат

oncle terrible
Команда форума
Что значит - "не рискуя БД"? Какой ещё такой "риск" здесь нарисовался?
то, что я написал выше - единственный выход?
для твоей дурацкой корзины - единственный. И ты это мог бы и сам сообразить. Если бы не сидел и не тупил на форуме, разинув рот.

А если делать корзину по-человечески, а не через задний проход, и не писать в неё родословную бабушки младшего упаковщика на оптовой базе, а писать только то, что нужно - АЙДИ товара, и его количество, то одной куки хватит на сотню товаров.
 
Сверху