Forum Webscript.Ru
Программирование => PHP => Тема начата: Lucent от 04 Сентября 2006, 19:55:56
-
Счетчик нормально работал, когда был установлен на 1ом сайте.
Теперь неободимо его поставить на нескольких.
Алгоритм:
1. на каждой странице картинка с подгрузкой скрипта счетчика

2. counter.php
if($_COOKIE[\'visitors_date\']!=date(\'Y-m-d\'))
{
//это новый посетитель в моей системе
1. вставка в таблицу visitors информации о посетителе
2. сохраняю в куках: \'visitors_date\' + \'visitors_id\'
}
else
{
//старый посетитель
1. сохраняю таблицу visitorspage: id посещенного сайта + наименование посещенной страницы для посетителя $_COOKIE[\'visitors_id\']
}
счетчик установлен на 2ух сайтах (test.com + demo.com), которые есть дополнительными доменами на одном хостинге
сам скрипт подгружается с test.com
Проблема:
счетчик на demo.com не правильно работает , а именно каждый мой клик считает за нового посетителя
счетчик на test.com работает правильно
P.S. локально для 2ух виртуальных хостов все нормально работает, на хостинге - нет.
В чем может быть проблема?
-
в куках, вестимо
-
ТО есть получается, что куки оставленные подгружаемым скриптом на другом домене, не досутпны для него, как же тогда счетчики индентифицирует полльзователей по кукам?
-
Lucent
Именно. Идентифицируют при помощи cookie для одного (своего) домена.
-
CGVictor
поясни пожалуйста
Я правильно понимаю.
Скрипт http://test.com/counter.php оставляет такую куку
setcookie ("visitors_id", 100, time()+86400);
на 2 доменах
Варианты:
1. на родном домене(http://test.com/) после перезагрузки страницы
он получит набор кук оставленных скриптами с http://test.com/
то есть $_COOKIE[\'visitors_date\'] будет равна 1000 - все ok
2. на чужом домене (http://demo.com/) после перезагрузки страницы
он получит набор кук оставленных скриптами с http://demo.com/, а его куки привязаны к (http://test.com/), то есть $_COOKIE[\'visitors_date\'] будет пустой
все верно?
если да, то как работать с куками скрипту на чужом хосте?
-
Lucent
Рассуждаешь правильно.
В общем ситауция такова: скрипт может получить доступ только к тем кукам, которые установлены для его домена (либо верхнего домена второго уровня, но это несущественно).
Как выходить из положения: выделять одни домен под всю статистику. На практике это означает, обычно, скрипт статистики на одном из сайтов, к которому и должно идти обращение от юзера. А он уже выставит куку для своего домена (и впоследствии спокойно получит, ведь обращаются на его же домен).
Проще и быстрее - написать скрипт, выдающий картинку, и поместить ссылку на нее со всех хостов.
-
Что ж тогда у меня не так?
>Проще и быстрее - написать скрипт, выдающий картинку, и поместить ссылку на нее со всех хостов.
у меня на каждом сайте - картинка
1. на test.com - 
2. demo.com 
>Как выходить из положения: выделять одни домен под всю статистику. На практике это означает, обычно, скрипт статистики на одном из сайтов, к которому и должно идти обращение от юзера. А он уже выставит куку для своего домена (и впоследствии спокойно получит, ведь обращаются на его же домен).
скрипт counter.php на отдельном домене test.com
не могу уловить отличия того что у меня от описанного тобою
-
Lucent
Lucent:
не могу уловить отличия
Да, я заметил. Хм.
На всякий случай проверил на своих хостах тот же метод. У меня - работает.
Есть подозрение: а какой браузер?
-
>Есть подозрение: а какой браузер?
MyIE
да дело и не в нем, была уже куча посетителей с разными броузерами - то же самое
Вопрос конкретный:
Скрипту counter.php который подгружается картинкой на другом хосте http://demo.com/

должны быть доступны куки, оставленные им же или нет?
По идее должны.
Я правильно понимаю:
странице скажем http://demo.com/index.php досутпны куки для домена demo.com
а для подгружаемого http://test.com/counter.php должны доступны куки для test.com, то есть те что он и оставлял?
-
А дело случайно не в том, что мои куки на чужом хосте являются "сторонними", а в броузере в настройках стоит запретить "сторонние куки" ...
хотя вижу, что другие счетчики подгружаемые с моих сайтов - оставляют их без проблем ....
-
Вроде понял, не знаю верно ли:
по умолчанию в броузерах стоит "блокировать сторонние куки не удовлетворяющие политики конфедициальности"
то есть, если у сайта, который предоставляет счетчик (domik.net, realt.ua) нет сертификата безопасности - его сторонние куки (на других сайтах) будут блокированы, и такой счетчик может подсчитать только хосты и клики.
у крутых поорталов (bigmir.net) - сертификат есть и они могут проводить идентификацию по сторонним куках
верно?
-
Lucent
Да, ты понял верно (сорри, сразу не написал - уже с работы уехал).
Есть выход: написать P3P policy. Это документ для IE, регламентирующий работу с частной информацией. (действует в IE6 и IE7)
Можешь разбираться с xml-нотификацией (советую, много умного есть), а можно просто отдать в заголовках:
header(\'P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"\');
Это - сокращенная запись разрешения на все типы использования.
Попробуй.