Forum Webscript.Ru
Программирование => PHP => Тема начата: Pr0Head от 08 Ноября 2002, 19:35:31
-
Здравствуйте!
Почему-то не получается обновить кукисы.
Делаю так:
$mygoods = $HTTP_COOKIE_VARS["goods"].",".$id;
setcookie("goods", $mygoods);
но кука не обновляется.
Пробовал делать массив, типа $HTTP_COOKIE_VARS["goods"][], но тоже не делает, а просто убивает старую и добавляет новую. :rolleyes:
Пробовал как на локалке (Вин), так и у хостера (*никс).
-
Pr0Head
но кука не обновляется
Она и не будет так обновлятся. И не должна обновляться. В том же самом запросе что ты хотел бы получить?
Или - что значит обновляться, что там должно обновляться?
Собственно в чём твой вопрос?
Вообще рекомендую делать простой debug всегда, типа для просмотра значений переменных.
Куки штука безотказная и несложная, но надо руководствоваться документацией (http://www.php.net/manual/ru/function.setcookie.php).
Или попытайся сформулировать вопрос так, что бы дать конкретный совет.
Всего хорошего.
-
но кука не обновляется.
скорее всего это из-за незнания HTTP
-
2 new: Мне нужно в "плэйлист" добавлять, удалять композиции.
Принцип - как в интернет-магазине.
Допустим есть каталог композиций. У каждой композиции есть ссылочка "добавить в плэйлист", после нажатия на которую id этого трэка записывается в куки.
После того как выбор закончен, пользователь переходит в свой плэйлист и там может удалить ненужные трэки.
Как мне их записать в виде массива типа:
$HTTP_COOKIE_VARS["goods"][0] = id первого трэка,
$HTTP_COOKIE_VARS["goods"][1] = id второго трэка
и т.д. ?
-
Хм.
Сессии по такому же принципу работают, а куки нет. :\\
-
Pr0Head
сессии хранят данные на сервере а куки у клиента.
Если ограничить кол-во композиций в плейлисте то можно сделать что-то вроде:
setcookie("list",imlpode("|",$array_of_items))
Насколько я помню стандарт строка должна быть не более 4096 байт
а в скриптах $list = exlpode("|",$_COOKIE[\'list\']);
Итог:
делай через сессии и не мучайся
-
Макс
Сессии наверняка тут не подойдут, ему и между сессиями надо сохранять плейлист.
Pr0Head
Если хранить одну запись в куке, то учти ограничение в 20 кук, которые ты можешь поставить.
Записать как есть
setcookie("goods[0]",$goods0,3000000);
setcookie("goods[1]",$goods1,3000000);
-
А почему нельзя хранить плейлист в базе, а в куках только ИДшник?
-
Сессии наверняка тут не подойдут, ему и между сессиями надо сохранять плейлист.
ну тогда такие данные вообще в отдельной таблице хранить нужно. Примерно такого типа :
--------------------------
| user_id | track_id |
--------------------------
-
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 и получаю массив.
-
Ну, я вообще-то имел в виду то же, что и Макс...
введи поле для юзера время последнего логона. Раз в день по крону запускай чистильщик, который удаляет плейлист юзера, которого уже не было, допустим, месяц.... ИМХО, это лучше, чем куки....
-
Пока делаю так:
в сессии регистрирую переменную "track" и записываю туда данные в виде одной записи "$id,$id2,$id3" и т.п. а потом считываю, делаю explode и получаю массив.
идеально
-
:)
Вроде все нормально заработало.
Спасибо всем за помощь!
-
Прохед, а не легче куку сначла стереть , а потом записать заново?
-
Да что-то не клеется у меня с ними, хотя они вроде поще сессий.
Пробовал, но видимо как-то неправильно делал.
-
alesh
ты не мог бы объяснить глубокий смысл этого действия?
И примерный алгоритм?