Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с установкой кук 
:(
    Опции темы
begin
Дата 21.10.2009, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 415
Регистрация: 16.5.2007

Репутация: нет
Всего: нет



Проверяю, есть ли кука. Если нет, то назначаю ей свежий номер из базы. Но даже после обновления страницы, скрипт не видит куку - каждый раз пытается ставить новую.
Код

if ($_COOKIE['chat']!==NULL)
{
$chat=intval($_COOKIE['chat']);
}
else
{
$query="select `id` from `t_chat` order by `id` desc";
$result=mysql_query($query, $db) or die(mysql_error());
$res=mysql_fetch_array($result);
$chat=$res['id']+1;
$query="insert into `t_chat` values ('')";
$result=mysql_query($query, $db) or die(mysql_error());
setcookie("chat", "$chat", time()+86400);
}


В другом скрипте кука ставится аналогично и без проблем:
Код

setcookie("user", "login", time()+86400);

и после обновления страницы кука нормально видна.

PM MAIL   Вверх
Kallisto
Дата 21.10.2009, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 163
Регистрация: 20.4.2007

Репутация: -3
Всего: -1



Дата и время на компьютере где запущен сервер и на вашем какие ? 
PM MAIL   Вверх
begin
Дата 21.10.2009, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 415
Регистрация: 16.5.2007

Репутация: нет
Всего: нет



Разница в 1 один час. Я живу в Украине, а сервер находится в России. Даты совпадают.
PM MAIL   Вверх
Ипатьев
Дата 21.10.2009, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



выводить отладочную информацию.
смотреть, что в $chat (переменные, кстати, в кавычках не пишут)
смотреть, какой заголовок уходит браузеру

Добавлено через 25 секунд
проверка, кстати, странная
PM MAIL   Вверх
begin
Дата 21.10.2009, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 415
Регистрация: 16.5.2007

Репутация: нет
Всего: нет



Цитата(Ипатьев @ 21.10.2009,  20:36)
выводить отладочную информацию.
смотреть, что в $chat (переменные, кстати, в кавычках не пишут)
смотреть, какой заголовок уходит браузеру

Добавлено @ 20:36
проверка, кстати, странная

Значение переменной проверял - правильно берется из базы и увеличивается на 1.
Пробовал и с кавычками и без. Сейчас убрал.
А как посоветуете правильно проверить, установлена ли кука с таким именем?
PM MAIL   Вверх
Ипатьев
Дата 21.10.2009, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



isset(), empty()

значение берется совсем неправильно.
вместо всего этого винегрета должно быть
Код

$query="insert into `t_chat` values ('')";
$result=mysql_query($query, $db) or die(mysql_error());
$chat=mysql_insert_id();

хотя странно. в этой таблице единственное поле?
PM MAIL   Вверх
begin
Дата 25.10.2009, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 415
Регистрация: 16.5.2007

Репутация: нет
Всего: нет



Цитата

isset(), empty()

попробовал оба варианта - не работают  smile 

Цитата

хотя странно. в этой таблице единственное поле?

да, эта таблица нужна для хранения счетчика.

Вобщем на всякий случай еще раз обрисую проблему: человек заходит на сайте в раздел Контакты. Там есть чат с менеджером сайта. В момент захода на страницу скрипт проверяет - установлена ли кука. Если нет, то берется самый последний id из таблицы, увеличивается на один. Это значение записывается в таблицу, а также на компе пользователя устанавливается кука с таким значением. Сама кука является идентификатором переписки посетителя с менеджером (чтобы одновременные переписки не накладывались друг на друга, а также не были видны остальным посетителям). Куку я ставлю на сутки, чтобы человек ведя чат с менеджером, мог время от времени уходить на другие страницы сайта. Когда возвращается в раздел Контакты, то все еще видит свою переписку. Но именно эта возможность у меня сейчас и не работает - каждый раз при открытии этой страницы скрипт не находит куку и ставит новую  smile 
PM MAIL   Вверх
Ипатьев
Дата 25.10.2009, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Цитата(begin @  25.10.2009,  21:55 Найти цитируемый пост)
попробовал оба варианта - не работают

значит, неправильно пробовал


PM MAIL   Вверх
begin
Дата 25.10.2009, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 415
Регистрация: 16.5.2007

Репутация: нет
Всего: нет



Делал вот так:

Код

if (isset($_COOKIE['chat']))
{
$chat=intval($_COOKIE['chat']);
}
else
{
$query="select `id` from `t_chat` order by `id` desc";
$result=mysql_query($query, $db) or die(mysql_error());
$res=mysql_fetch_array($result);
$chat=$res['id']+1;
$query="insert into `t_chat` values ('')";
$result=mysql_query($query, $db) or die(mysql_error());
setcookie("chat", "$chat", time()+86400);
}

и вот так:
Код

if (empty($_COOKIE['chat']))
{
$query="select `id` from `t_chat` order by `id` desc";
$result=mysql_query($query, $db) or die(mysql_error());
$res=mysql_fetch_array($result);
$chat=$res['id']+1;
$query="insert into `t_chat` values ('')";
$result=mysql_query($query, $db) or die(mysql_error());
setcookie("chat", "$chat", time()+86400);
}
else
{
$chat=intval($_COOKIE['chat']);
}

не работает ни то, ни то.

PM MAIL   Вверх
Ипатьев
Дата 26.10.2009, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



да, проверка правильная.
если нужно, чтобы кука была доступна во всех каталогах сайта, надо ставить ее для корневого каталога, указывая это в параметрах.
PM MAIL   Вверх
begin
Дата 26.10.2009, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 415
Регистрация: 16.5.2007

Репутация: нет
Всего: нет



Цитата(Ипатьев @ 26.10.2009,  08:34)
если нужно, чтобы кука была доступна во всех каталогах сайта, надо ставить ее для корневого каталога, указывая это в параметрах.

вот, что я прочитал об использовании данного параметра в куках:
Цитата

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

У меня скрипт, устанавливающий куку и скрипт, ее проверяющий - один и тот же, и находится в в папке mysite.com/new
До этого я уже несколько раз делал подобное на других сайтах и тоже устанавливал куки не из корня сервера, а из вложенной папки. И скрипты из этой же папки нормально видели куки.
Пожалуйста объясните, если я что то не так понял. Но почему тогда именно в этот раз скрипт перестал видеть куки?
PM MAIL   Вверх
Ипатьев
Дата 26.10.2009, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Цитата(begin @  26.10.2009,  15:15 Найти цитируемый пост)
Но почему тогда именно в этот раз скрипт перестал видеть куки? 

Готового ответа на этот вопрос не существует. Надо разбираться.
Ставьте просмотрщик HTTP заголовков (есть в FireBug) и смотрите, какую куку ставит сервер. Возвращает ли ее браузер.
Тренируйтесь сначала без базу данных. Вы, собственно, проверили - возвращает ли она хоть что-нибудь?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0805 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.