Forum Webscript.Ru

Программирование => PHP => Тема начата: Pr0Head от 08 Ноября 2002, 19:35:31

Название: Как обновить куки?
Отправлено: Pr0Head от 08 Ноября 2002, 19:35:31
Здравствуйте!

Почему-то не получается обновить кукисы.

Делаю так:
$mygoods = $HTTP_COOKIE_VARS["goods"].",".$id;
setcookie("goods", $mygoods);

но кука не обновляется.

Пробовал делать массив, типа $HTTP_COOKIE_VARS["goods"][], но тоже не делает, а просто убивает старую и добавляет новую. :rolleyes:

Пробовал как на локалке (Вин), так и у хостера (*никс).
Название: Как обновить куки?
Отправлено: new от 08 Ноября 2002, 21:38:12
Pr0Head
Цитировать
но кука не обновляется


Она и не будет так обновлятся. И не должна обновляться. В том же самом запросе что ты хотел бы получить?
Или - что значит обновляться, что там должно обновляться?
Собственно в чём твой вопрос?
Вообще рекомендую делать простой debug всегда, типа для просмотра значений переменных.
Куки штука безотказная и несложная, но надо руководствоваться  документацией (http://www.php.net/manual/ru/function.setcookie.php).

Или попытайся сформулировать вопрос так, что бы дать конкретный совет.

Всего хорошего.
Название: Как обновить куки?
Отправлено: Макс от 09 Ноября 2002, 16:21:09
Цитировать
но кука не обновляется.
скорее всего это из-за незнания HTTP
Название: Как обновить куки?
Отправлено: Pr0Head от 09 Ноября 2002, 21:44:39
2 new:  Мне нужно в "плэйлист" добавлять, удалять композиции.

Принцип - как в интернет-магазине.
Допустим есть каталог композиций. У каждой композиции есть ссылочка "добавить в плэйлист", после нажатия на которую id этого трэка записывается в куки.

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

Как мне их записать в виде массива типа:
$HTTP_COOKIE_VARS["goods"][0] = id первого трэка,
$HTTP_COOKIE_VARS["goods"][1] = id второго трэка
и т.д. ?
Название: Как обновить куки?
Отправлено: Pr0Head от 10 Ноября 2002, 12:43:22
Хм.

Сессии по такому же принципу работают, а куки нет. :\\
Название: Как обновить куки?
Отправлено: Макс от 10 Ноября 2002, 13:59:35
Pr0Head
сессии хранят данные на сервере а куки у клиента.
Если ограничить кол-во композиций в плейлисте то можно сделать что-то вроде:
setcookie("list",imlpode("|",$array_of_items))
Насколько я помню стандарт строка должна быть не более 4096 байт
а в скриптах $list = exlpode("|",$_COOKIE[\'list\']);


Итог:
делай через сессии и не мучайся
Название: Как обновить куки?
Отправлено: Меняздесьдавнонет от 10 Ноября 2002, 15:54:38
Макс
Сессии наверняка тут не подойдут, ему и между сессиями надо сохранять плейлист.

Pr0Head
Если хранить одну запись в куке, то учти ограничение в 20 кук, которые ты можешь поставить.

Записать как есть
setcookie("goods[0]",$goods0,3000000);
setcookie("goods[1]",$goods1,3000000);
Название: Как обновить куки?
Отправлено: Metaller от 10 Ноября 2002, 17:15:46
А почему нельзя хранить плейлист в базе, а в куках только ИДшник?
Название: Как обновить куки?
Отправлено: Макс от 10 Ноября 2002, 17:24:44
Цитировать
Сессии наверняка тут не подойдут, ему и между сессиями надо сохранять плейлист.
ну тогда такие данные вообще в отдельной таблице хранить нужно. Примерно такого типа :
--------------------------
| user_id  | track_id |
--------------------------
Название: Как обновить куки?
Отправлено: Pr0Head от 10 Ноября 2002, 19:30:34
2 Metaller: Так названия трэков и храняться в отдельной таблице, в куки нужно только их id записывать.
Цитировать
У каждой композиции есть ссылочка "добавить в плэйлист", после нажатия на которую id этого трэка записывается в куки.


2 Maкс: Согласен, было бы правильнее. Но допустим, что пользователь навыбирал трэков, решил их скачать как-нть потом и благополучно забыл о сайте. А данные остались храниться. Постоянно отслеживать и чистить базу не хочеться. :/

2 RomikChef: А как добавлять автоматически в куки новый элемент массива? То есть как правильно сделать запись такого рода:
if (добавление нового трэка) {
$cnt = count($HTTP_COOKIE_VARS["goods\']);
setcookie("goods[$cnt]", $id, 3000000);
}

Пока делаю так:
в сессии регистрирую переменную "track" и записываю туда данные в виде одной записи "$id,$id2,$id3" и т.п. а потом считываю, делаю explode и получаю массив.
Название: Как обновить куки?
Отправлено: Metaller от 11 Ноября 2002, 09:54:39
Ну, я вообще-то имел в виду то же, что и Макс...

введи поле для юзера время последнего логона. Раз в день по крону запускай чистильщик, который удаляет плейлист юзера, которого уже не было, допустим, месяц.... ИМХО, это лучше, чем куки....
Название: Как обновить куки?
Отправлено: Меняздесьдавнонет от 11 Ноября 2002, 17:12:31
Цитировать
Пока делаю так:
в сессии регистрирую переменную "track" и записываю туда данные в виде одной записи "$id,$id2,$id3" и т.п. а потом считываю, делаю explode и получаю массив.

идеально
Название: Как обновить куки?
Отправлено: Pr0Head от 11 Ноября 2002, 17:35:49
:)

Вроде все нормально заработало.

Спасибо всем за помощь!
Название: Как обновить куки?
Отправлено: alesh от 12 Ноября 2002, 22:44:09
Прохед, а не легче  куку сначла стереть , а потом записать заново?
Название: Как обновить куки?
Отправлено: Pr0Head от 13 Ноября 2002, 18:29:26
Да что-то не клеется у меня с ними, хотя они вроде поще сессий.

Пробовал, но видимо как-то неправильно делал.
Название: Как обновить куки?
Отправлено: Меняздесьдавнонет от 13 Ноября 2002, 19:47:21
alesh
ты не мог бы объяснить глубокий смысл этого действия?
И примерный алгоритм?