![]() |
статистика посещений
счетчик я деалть научился, теперь хочется чего-нибудь большего. Как, например, фиксировать, сколько времени конкретный посетитель провел на странице? Наверное это очень просто, но ничего не могу придумать, используя чистый PHP. Подскажите пожалуйсто как это сделать. И еще, вопросик: обычный счетчик фиксирует посещения определенной страницы, а как сделать, чтобы считались обращения ко всем страницам сайта?
|
сколько времени конкретный посетитель провел на странице?
наверное с использованием кукиз и ДжаваСрипт :) обычный счетчик фиксирует посещения определенной страницы, а как сделать, чтобы считались обращения ко всем страницам создать код счетчик ... сохранить под counter.php и далее в каждой странице прописывать include("counter.php"); если это не в целях учебы, а срочняк надо то может лучше зарегиться в www.hotlog.ru - там очень хорошая статистика :) |
Время определить довольно просто. Для каждого юзера(ip) сохранять результат time(), если разница между текущим таймстемпом и последним не больше, для примера, 15*60 (15 мин), то прибавлять разницу к времени, проведенному на сайте.
|
V0iD :Я тупой немного, поясни подробнее плиз, это на чисом PHP сделать можно? А то я так понял, что нужно пстоянно отсылать с клиентской машины текушее время и сравнивать его с временем прихода посаетителя, а это уже , повидимому ,без Java Script не обойдется.
В особенности меня порадует кусочек программы, так легче разобраться. lanixov :мне не срочно, я просто учусь. Хотелось бы сделать на чистом PHP, если это возможно. Ставить один и тот же счетчик на каждую страницу не очень привлекательно, да и к тому же как тогда узнать какая страница сайта загружалась чаще? Спасибо за участие. |
CEO
смотри.... для каждого посетителя у тебя будет например запись в mysql там ты сохраняешь время последней активности... при кажой загрузке страницы (include counter.php;).... ты сравниваешь время, разницу прибаляешь к текущему времени и обновляешь ремя последней активности, теряется правда время, которое он провёл на странице перед тем как покинуть сайт, но это без js не сделать Добавлено через 1 минуту: Цитата:
|
Stasik :
>при кажой загрузке страницы (include counter.php.... ты сравниваешь время, >разницу прибаляешь к текущему времени и обновляешь ремя последней >активности С этим разобрался, и даже можно обойтись без записи MYSQL, а просто в обычный файл, но вот загвоздка, если посетитель побывал только на одной странице и ничего больше не загружал, время его ухода я узнать никак не смогу или смогу? Дай пожалуста эти 2-3 волшебгые строчки. А то я JavaScrip знаю еще хуже чем PHP. |
Цитата:
|
возможно всё :))
короче делаешь iframe размером 1х1.. или например так <img src="void.gif" name="counter" height="1" width="1"> по идее картинки там может и не быть (всёравно не увидят), но для красоты можно прозрачный гиф вот... а вот и волшебные строка <body onclose="javascript:document[counter].src='count.php;'"> вот... count.php может тож картинку возвращать, а может и нет..... это по вкусу не знаю... может и не будет работать... хотя по идее должно... если не будет, можно открыть маленькое окошко с count.php и по загрузке закрыть.... мож и напишу потом |
Stasik : спасибо, попробую сделать.
|
Stasik :Сделал, как ты посоветовал -- не работает :( , хотя и ошибок не выдает. Попробал так же сделать это так: на JP узнавать время
и помещать его в поля формы, а потом на событии закрытия вызывать метод отправки этой формы, но это тоже не работает. Может попробовать загружать в отдельном окне count.php? Как это сделать? |
<body onclose="javascript:window.open("count.php", "tinyWindow", 'width=1,height=1');
"> а count.php должен выдавать <script> window.close(); </script> |
Имхо такая организация каунтера будет раздражать посетителей. Лучше перенести это в нулевой iframe. А на OnClose сделать релоад во фрейме. Хотя так тоже может не работать - по причине, аналогичной примеру с гифом...
|
Гммм. а вариант писать джава скриптом в куки время ухода и на следующем посещении считывать? Конечно есть вариант что пользователь больше не появиться, но чо делать
|
Вложений: 1
Странно, но это все равно не работает на событии onclose, но как это ни странно
все работает как надо, если использовать событие onload -- при загрузке страницы ничего не срабатывает, когда закрывается окно документа, появляется всплывающее окно. Есть правда одно неудобство -- при нажатии обновления страницы тоже срабатывает событие onload. А что если сделать так: во всплывающем окне предложить посетителю выбрать: выводить это окно в следующий раз или нет. Если посетитель случайный, то его время все равно будет зафиксированно, если же он выберет, что бы это окно не выводилось, тогда в дальнейшем фиксировать проведеннное им время через куки. Как мне задействовать эти куки? Всем спасибо за помошь. Если хоите, можете посмотреть, что пока что получилось:http://infome.fatal.ru/proba.shtml Или скачать исходник: |
а зачем тебе такая точность, извини?
|
Время, проведенное на сайте юзером, является самой объективной статистикой сайта. Ни хиты, ни килобайты, ни страницы рядом не лежат... Хотя конечно всегда приятно знать, что юзер провел все свое время не только на главной странице :).
|
ну... я вот часто открываю окно.. и забываю в таскбаре... на сутки.... а потом ещё похожу.. туды сюды... а то обьективно
|
Stasik
такое поведение будет считаться за 2 посещения. Ведь каунтер считает разницу... |
дык и будет разица 24 часа или типа того... ;) хотя
если тебе так надо.. можно просто катинку 1х1 через JS раз в минуту обновлять..... |
"Странно, но это все равно не работает на событии onclose"
странно, откуда ты взял такое событи в JavaScript? вроде всегда было onunload :))) ето так ) для справки ) Добавлено через 5 минут: держы вообщем мини скриптяра, не доделал я его немного, но всеже :) ... может пригодиться :) <script language="JavaScript" type="text/javascript"> var millinow, blur_mill function window.onload() { var now = new Date() millinow = now.getTime()/1000 } function window.onblur() { // типо если человек не смотрит страницу :) var blur_m = new Date() blur_mill = blur_m.getTime()/1000 } function window.onfocus() { // а вот он вернулся :) var l = new Date() var m = l.getTime()/1000 if (!isNaN(blur_mill)) { millinow = millinow + m - blur_mill; alert("Вы отсутствовали на странице:"+loadTime+"секунд"); } } function window.onunload() { var later = new Date() var millilater=later.getTime()/1000 var loadTime=(Math.floor((millilater-millinow)*1000))/1000 alert("Вы провели на странице:"+loadTime+"секунд"); } // by SMAP </script> |
smap : Ай молодец! Скрпт как раз что надо, я его уже доделал:) -- дописал всего одну строчку в функцию window.onfocus() :
var loadTime=(Math.floor((m - blur_mill)*1000))/1000 Теперь вроде информации вполне достаточно чтобы сделать класный скрипт статистики. Огромное спасибо! |
| Часовой пояс GMT +4, время: 10:46. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.