Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Вопрос на тему COOCKIE
Форумы портала PHP.SU » » Вопросы новичков » Вопрос на тему COOCKIE

Страниц (1): [1]
 

1. Master_YI - 04 Августа, 2014 - 21:18:34 - перейти к сообщению
Я не использовал куки раньше так что я просто новичок в этом. Все что я знаю о них я прочитал с самых разных сайтов.

Проблема: куки не сохраняется после обновления страницы.

В чем проблема: так как куки нужно отправлять до того как пойдут все скрипты оно находится в начале с "value" = переменная счетчика $counter. (Счетчик считает сколько товаров будет находится в корзине пользователя, каждый товар = +1 к счетчику.) Так как я только в конце файла записываю в куки это значение оно там есть и его можно вывести. Но если обновить страницу - куки обнуляется так как переменная теперь пустая и в куки нечего записать.

Я нашел решение и хочу спросить у вас совета:
Я думаю создать переменную массива GET что бы та передавалась с страницы на страницу и каждый раз по началу файла записывалась в куки как новая.

Может я конечно вообще ничего не шарю в этом, тогда подскажите как лучше это сделать?
2. teddy - 04 Августа, 2014 - 21:45:31 - перейти к сообщению
Master_YI пишет:
Но если обновить страницу - куки обнуляется

Так Вы сами ответили на свой вопрос. Если кука "обнуляется", значит Вы её перезаписываете каждый раз, либо слишком краток срок её жизни. Нужно сделать проверочку, если куки нет, то её нужно создать, если кука уже есть, тогда мы просто используем её значение в нужных целях.

Предполагаю, что проверки на isset у Вас нет, в соответствии с этим, повторный вызов функции setcookie с аналогичными параметрами(в частности, название самой куки) просто перезапишет прежде сохраненное значение. Отсюда происходит и обнуление.

http://php.net/manual/ru/function.setcookie.php
Курите.
3. Tyoma5891 - 04 Августа, 2014 - 21:48:37 - перейти к сообщению
Master_YI пишет:

Может я конечно вообще ничего не шарю в этом, тогда подскажите как лучше это сделать?

смысл куков как раз в том чтобы использовать их при обновлениях страниц Улыбка
4. Master_YI - 05 Августа, 2014 - 13:47:43 - перейти к сообщению
teddy пишет:
Предполагаю, что проверки на isset у Вас нет, в соответствии с этим, повторный вызов функции setcookie с аналогичными параметрами(в частности, название самой куки) просто перезапишет прежде сохраненное значение. Отсюда происходит и обнуление.


Согласен, это я исправил:

PHP:
скопировать код в буфер обмена
  1. if (isset($_COOKIE[goods_counter])) {setcookie("goods_counter", 0);}


После чего я добавил это:

PHP:
скопировать код в буфер обмена
  1. $_COOKIE[goods_counter] = $_COOKIE[goods_counter]+1;
  2. echo $_COOKIE[goods_counter];


Но куки всегда равняется только 1(а по идее должен увеличиваться на 1 каждый раз при обновлении страницы). Он ведь не должен более обнулятся, он теперь проверяется в начале на существование.
Почему такое происходит?
5. RickMan - 05 Августа, 2014 - 14:16:04 - перейти к сообщению
Значение кукиса можно менять только через setcookie, насколько я помню.
6. Tyoma5891 - 05 Августа, 2014 - 14:16:22 - перейти к сообщению
Master_YI пишет:

Согласен, это я исправил:

PHP:
скопировать код в буфер обмена
  1. if (isset($_COOKIE[goods_counter])) {setcookie("goods_counter", 0);}

Он ведь не должен более обнулятся, он теперь проверяется в начале на существование.
Почему такое происходит?

Вы хоть сами понимаете что Вы делаете? Улыбка
перечитайте 48 раз эту строчку кода внимательно...
7. Master_YI - 05 Августа, 2014 - 14:25:56 - перейти к сообщению
Tyoma5891 пишет:

перечитайте 48 раз эту строчку кода внимательно...

Так. Как я писал выше - все что я узнал и ПОНЯЛ про куки это то что я прочел с сайта этого и емуподобного с тем же текстом. Как я прочитал то к куки можно обращаться(если он существует) с помощью $_COOKIE[название], иначе его нужно задать с помощью setcookie.
НУ своими попытками исправить проблему я обнаружил некие факты, которые описать не могу ибо чего-то не понимаю.
Так поясните же мне что я пропустил?
(Добавление)
RickMan пишет:
Значение кукиса можно менять только через setcookie, насколько я помню.

ДА? Это только читать его можно с помощью $_COOKIE[название]?
Если так то у меня только один способ через ГЕТ массив?
8. Tyoma5891 - 05 Августа, 2014 - 14:37:59 - перейти к сообщению
задаются кукисы и удаляются с помощью функции setcookie, чтение значений в кукисах осущесвтляется с массива $_COOKIE что непонятно тут же просто все? Улыбка
9. Master_YI - 05 Августа, 2014 - 14:57:38 - перейти к сообщению
Tyoma5891 пишет:
задаются кукисы и удаляются с помощью функции setcookie, чтение значений в кукисах осущесвтляется с массива $_COOKIE что непонятно тут же просто все? Улыбка

Эх.. Все чуть сложнее, я не так понял что прочитал. Всем спасибо!

 

Powered by ExBB FM 1.0 RC1