Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > Невкусные cookie


Автор: s_a_s_h_a 9.8.2004, 15:17
Cookie.... У меня проблема с правильным определением количества посетителей.
Вообще как их определять? Я только понимаю, что их должно быть больше или равно количеству хостов и все. Вот определения нехорошего Hotloga:
Хосты - количество посетителей с уникальным IP-адресом.
Посетители - количество уникальных посетителей побывавших на
страницах вашего ресурса.

Кто-нибудь может пояснить мне это рекурсивное определение.

Я так понимаю, что число посетителей можно узнать только по кукам?
Тогда, может быть, кто-нибудь скажет в чем причина следующего результата:

На JavaScript мы узнаем поддерживаются ли куки в данном браузере:

var COOKIES=(navigator.cookieEnabled)? 1 : 0;

У меня получаются единички, даже тогда, когда куки явно не записываются. Это я отследил и точно в этом уверен и получается, что посетителей больше чем на самом деле.

Куки записываю и получаю так:

my $cookies=$ENV{HTTP_COOKIE};

print "Set-Cookie:name_cook=$cook\n";

Что не так?

Автор: GrayCardinal 9.8.2004, 16:41
Цитата
проблема с правильным определением количества посетителей

А смысл решать эту проблемы через cookie ? Может просто для определения что страницу загружали - в нее вставить ссылку на "картинку", т. е. на Ваш скрипт ?

Автор: s_a_s_h_a 9.8.2004, 17:19
GrayCardinal, смысл таков, что мне надо узнать количество хитов, хостов и посетителей. Хиты - это как раз то, что вы и имеете ввиду. Опять же в терминологии Hotloga
Хиты - количество просмотров страниц с установленным счетчиком на которых побывали посетители вашего ресурса.
Подсчет хитов и хостов (уникальные айпишники) ведется более или менее нормально. А вот с учетом посетителей проблемы.

Автор: GrayCardinal 10.8.2004, 11:27
ясно. А контент - тайп ("Content-Type") строчка у вас как прописана ? Там должен быть один конец строки, если он стоит ДО этой строчки.
print "Set-Cookie:name_cook=$cook\n";
а в этой строчке два конца строки (конец заголовка), может проблема в этом ?
И может лучше вот так куки писать ? :
Код

use CGI;

packet_cookie = cookie (-NAME => "preference name",
  -VALUE => "dannie",
  -EXPIRES => "+2y");
print header (-COOKIE => $packed_cookie);


Цитата
получается, что посетителей больше чем на самом деле

А определять уникальность по IP-шнику нельзя ? IMHO, надежней чем по кукам...

Автор: s_a_s_h_a 11.8.2004, 08:45
Цитата
А определять уникальность по IP-шнику нельзя ? IMHO, надежней чем по кукам...


Нет. Ранее я уже писал, что число уникальных IP-адресов - это количество хостов в данной терминологии.

А что касается установки куков, так ведь они работают, но невсегда.
Можеть быть, просто кто-то в своих браузерах (почему-то только в IE 6.0) поставил точечку в дополнительных параметрах конфидициальности напротив запрещать, но я сомневаюсь что кому-то это надо. Так что задача определения чмсла посетителей остается пока нерешенной.

Автор: korob2001 11.8.2004, 16:57
Цитата

Можеть быть, просто кто-то в своих браузерах (почему-то только в IE 6.0) поставил точечку в дополнительных параметрах конфидициальности напротив запрещать, но я сомневаюсь что кому-то это надо.

И напрасно ты сомневаешься, многие отключают поддержку кук или на крайний случай получают куки только с уведомлением.
На мой взгляд более точное определение по IP, но и IP частенько изменяется ;), так что и тут есть свои недостатки.
Кстати IP вычесляе лучше так:
Код

$ip = $ENV{ HTTP_X_FORWARDED_FOR } || $ENV{ REMOTE_ADDR };

так будет более точнее, чем:
Код

$ip = $ENV{ REMOTE_ADDR };

А ещё лучше создай регистрацию, тогда уже будешь точно знать кто и сколько заходил.

Автор: s_a_s_h_a 11.8.2004, 19:06
Цитата
А ещё лучше создай регистрацию, тогда уже будешь точно знать кто и сколько заходил.

Не могу, так как это счетчик.

Код
$ip = $ENV{ HTTP_X_FORWARDED_FOR } || $ENV{ REMOTE_ADDR };

Я так и делаю.

Цитата
На мой взгляд более точное определение по IP

Я бы с радостью остановился на подсчете IP-адресов, но на работе мне говорят, что надо обязательно знать сколько посетителей было. Мол типа с одного хоста могут заходить разные посетители. Но так как работают эти куки... сколько их было на самом деле не узнать. Можно было бы придумать алгоритм по отслеживанию пути, но это очень ресурсоёмкий алгоритм получиться. Что делать? Не знаю...


Автор: korob2001 11.8.2004, 19:29
Можно проверять куки и если их не оказывается, то попробовать прицерить их клиенту, а затем снова проверить. Если кук и в этом случае не окажется, значит делать проверку по IP.

Или просто запретить юзеру попадать на сайт без поддержки кук, при этом прося его включить в настройках данную функцию.

PS: вообще узнать точное кол-во посещений теоретически невозможно. С куками пороблема тебе известна, с ip думаю тоже. Для таких целей, я слышал можно вычислить индивидуальный номер модема, но это помоему делается на C/C++, хотя не уверен, можешь спросить. Это был бы идеальный выход из твоей ситуации.
Если мне не изменяет память, то слышал я это на http://perl.ru, но это было давно.

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