Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Проблемы с COOKIE


Автор: barcelona 19.7.2008, 13:42
Здравствуйте!
У меня на каждой странице сайта есть модуль следующего содержания (это демонстрационный пример, отражающий суть моей проблемы):
Код

        $name = "m103";
        $idBanner = 12;
        if (!isset($_COOKIE[$name])) {
            setcookie($name, $idBanner);
        } else {
            $value = $_COOKIE[$name]."_".$idBanner;
            setcookie($name, $value);
            echo $_COOKIE[$name];
        }

Для каждой страницы сайта переменная $_COOKIE[$name] будто заново создаётся. То есть на первой странице она равна 12, на второй тоже и на третьей. А вот когда я начинаю обновлять страницы или посещать их по второму разу, то строка '_12' добавляется, но только в пределах этой страницы. Т.е. если я посетил одну страницу 3 раза, то переменная будет равна 12_12, вне зависимости от того, сколько раз я посетил другие страницы того же сайта. Помогите разобраться пожалуйста. Мне нужно, чтобы установка переменной COOKIE происходила из страницы в страницу.        

Автор: Feldmarschall 19.7.2008, 13:47
не вчитывался, но навскидку:
а сколько у тебя наких name на сайт?
или, проще говоря, сколько уникальных кук?

Автор: barcelona 19.7.2008, 14:08
Цитата(Feldmarschall @ 19.7.2008,  13:47)
а сколько у тебя наких name на сайт?
или, проще говоря, сколько уникальных кук?

4. Так возможно ли, чтобы на одной странице изменить переменную COOKIE, и на других страницах это изменение учитывалось?

Автор: Feldmarschall 19.7.2008, 14:34
Ну разумеется. так оно и действует. 
хотя все зависит от того, что имеется в виду "страница", "посетил" и так далее.

так, как описано, работает этот демонстрационный пример на самом деле? или ты не проверял, а написал только в демонстрационных целях?

Автор: vasac 19.7.2008, 14:44
Вопрос: как изменить поведение кук, устанавливаемых функцией setCookie.
Ответ: сходить, таки, в http://ru2.php.net/setcookie. Посмотреть, что означают все параметры.

Автор: mustafallah 19.7.2008, 14:56
Или сюда http://php.su/functions/?f=setcookie&choice=info

Автор: lukas 20.7.2008, 12:00
Ну всего то нужно указать четвертый необязательный параметр Path = '/', чтобы куки действовали на всем сайте...
Код


$name = "m103";
        $idBanner = 12;
        if (!isset($_COOKIE[$name])) {
            setcookie($name, $idBanner,time()+3600,'/');
        } else {
            $value = $_COOKIE[$name]."_".$idBanner;
            setcookie($name, $value,time()+3600,'/');
            echo $_COOKIE[$name];
        }

Автор: vasac 20.7.2008, 13:06
lukas, если считаете, что человек не сможет сам сходить по данной ему ссылке, хоть пишите корректно - там не третий параметр.

Автор: lukas 20.7.2008, 16:20
vasac, чуть ошибся, исправил...

Автор: barcelona 21.7.2008, 10:24
Можно ещё один вопрос: если я уничтожаю COOKIE строчкой
Код

setcookie($module, '', time()-3600, '/');

а потом тут же пишу 
Код

setcookie($module, $value, 0, '/');

будет ли переустановлено значение COOKIE? Мне нужно именно сначала уничтожить переменную, а потом тут же её создать. Сейчас у меня переменная уничтожаться не хочет...

Автор: Feldmarschall 21.7.2008, 10:29
при чем здесь переменные? Setcookie устанавливает куки, а не переменные.
определись с тем, с чем ты хочешь работать, и с этим работай.
код
Код

setcookie($module, '', time()-3600, '/');
setcookie($module, $value, 0, '/');

не имеет смысла

Автор: vasac 21.7.2008, 10:31
Цитата(barcelona @  21.7.2008,  10:24 Найти цитируемый пост)
будет ли переустановлено значение COOKIE? 

а что говорит эксперимент?

Цитата(barcelona @  21.7.2008,  10:24 Найти цитируемый пост)
Мне нужно именно сначала уничтожить переменную, а потом тут же её создать. 

мотивируйте

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)