IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   статистика посещений (http://www.imho.ws/showthread.php?t=43535)

CEO 16.11.2003 17:08

статистика посещений
 
счетчик я деалть научился, теперь хочется чего-нибудь большего. Как, например, фиксировать, сколько времени конкретный посетитель провел на странице? Наверное это очень просто, но ничего не могу придумать, используя чистый PHP. Подскажите пожалуйсто как это сделать. И еще, вопросик: обычный счетчик фиксирует посещения определенной страницы, а как сделать, чтобы считались обращения ко всем страницам сайта?

lanix 16.11.2003 18:50

сколько времени конкретный посетитель провел на странице?
наверное с использованием кукиз и ДжаваСрипт :)

обычный счетчик фиксирует посещения определенной страницы, а как сделать, чтобы считались обращения ко всем страницам
создать код счетчик ... сохранить под counter.php и далее в каждой странице прописывать include("counter.php");

если это не в целях учебы, а срочняк надо то может лучше зарегиться в www.hotlog.ru - там очень хорошая статистика :)

V0iD 16.11.2003 20:29

Время определить довольно просто. Для каждого юзера(ip) сохранять результат time(), если разница между текущим таймстемпом и последним не больше, для примера, 15*60 (15 мин), то прибавлять разницу к времени, проведенному на сайте.

CEO 17.11.2003 00:00

V0iD :Я тупой немного, поясни подробнее плиз, это на чисом PHP сделать можно? А то я так понял, что нужно пстоянно отсылать с клиентской машины текушее время и сравнивать его с временем прихода посаетителя, а это уже , повидимому ,без Java Script не обойдется.
В особенности меня порадует кусочек программы, так легче разобраться.
lanixov :мне не срочно, я просто учусь. Хотелось бы сделать на чистом PHP, если это возможно. Ставить один и тот же счетчик на каждую страницу не очень привлекательно, да и к тому же как тогда узнать какая страница сайта загружалась чаще?

Спасибо за участие.

Stasik 17.11.2003 01:10

CEO
смотри.... для каждого посетителя у тебя будет например запись в mysql
там ты сохраняешь время последней активности... при кажой загрузке страницы (include counter.php;).... ты сравниваешь время, разницу прибаляешь к текущему времени и обновляешь ремя последней активности, теряется правда время, которое он провёл на странице перед тем как покинуть сайт, но это без js не сделать

Добавлено через 1 минуту:
Цитата:

Первоначальное сообщение от Stasik
CEO
смотри.... для каждого посетителя у тебя будет например запись в mysql
там ты сохраняешь время последней активности... при кажой загрузке страницы ( include counter.php; ).... ты сравниваешь время, разницу прибаляешь к текущему времени и обновляешь ремя последней активности, теряется правда время, которое он провёл на странице перед тем как покинуть сайт, но это без js не сделатьюю а в js это тоже 2 строки... или 3


CEO 17.11.2003 02:48

Stasik :
>при кажой загрузке страницы (include counter.php.... ты сравниваешь время, >разницу прибаляешь к текущему времени и обновляешь ремя последней >активности
С этим разобрался, и даже можно обойтись без записи MYSQL, а просто в обычный файл, но вот загвоздка, если посетитель побывал только на одной странице и ничего больше не загружал, время его ухода я узнать никак не смогу или смогу?
Дай пожалуста эти 2-3 волшебгые строчки. А то я JavaScrip знаю еще хуже чем PHP.

lanix 17.11.2003 16:49

Цитата:

больше не загружал, время его ухода я узнать никак не смогу или смогу?
это , мне кажется , не возможно :-(

Stasik 18.11.2003 00:29

возможно всё :))

короче делаешь 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 и по загрузке закрыть....
мож и напишу потом

CEO 18.11.2003 15:07

Stasik : спасибо, попробую сделать.

CEO 20.11.2003 15:50

Stasik :Сделал, как ты посоветовал -- не работает :( , хотя и ошибок не выдает. Попробал так же сделать это так: на JP узнавать время
и помещать его в поля формы, а потом на событии закрытия вызывать метод отправки этой формы, но это тоже не работает.
Может попробовать загружать в отдельном окне count.php? Как это сделать?

Stasik 20.11.2003 21:32

<body onclose="javascript:window.open("count.php", "tinyWindow", 'width=1,height=1');
">


а count.php должен выдавать

<script>
window.close();
</script>

V0iD 20.11.2003 21:41

Имхо такая организация каунтера будет раздражать посетителей. Лучше перенести это в нулевой iframe. А на OnClose сделать релоад во фрейме. Хотя так тоже может не работать - по причине, аналогичной примеру с гифом...

medved2002 21.11.2003 14:24

Гммм. а вариант писать джава скриптом в куки время ухода и на следующем посещении считывать? Конечно есть вариант что пользователь больше не появиться, но чо делать

CEO 22.11.2003 19:51

Вложений: 1
Странно, но это все равно не работает на событии onclose, но как это ни странно
все работает как надо, если использовать событие onload -- при загрузке страницы
ничего не срабатывает, когда закрывается окно документа, появляется всплывающее окно.
Есть правда одно неудобство -- при нажатии обновления страницы тоже срабатывает событие onload.

А что если сделать так: во всплывающем окне предложить посетителю выбрать: выводить это окно в
следующий раз или нет. Если посетитель случайный, то его время все равно будет зафиксированно,
если же он выберет, что бы это окно не выводилось, тогда в дальнейшем фиксировать проведеннное
им время через куки. Как мне задействовать эти куки?

Всем спасибо за помошь.
Если хоите, можете посмотреть, что пока что получилось:http://infome.fatal.ru/proba.shtml
Или скачать исходник:

Stasik 22.11.2003 21:10

а зачем тебе такая точность, извини?

V0iD 23.11.2003 03:19

Время, проведенное на сайте юзером, является самой объективной статистикой сайта. Ни хиты, ни килобайты, ни страницы рядом не лежат... Хотя конечно всегда приятно знать, что юзер провел все свое время не только на главной странице :).

Stasik 23.11.2003 05:59

ну... я вот часто открываю окно.. и забываю в таскбаре... на сутки.... а потом ещё похожу.. туды сюды... а то обьективно

V0iD 23.11.2003 14:27

Stasik
такое поведение будет считаться за 2 посещения. Ведь каунтер считает разницу...

Stasik 23.11.2003 15:54

дык и будет разица 24 часа или типа того... ;) хотя

если тебе так надо.. можно просто катинку 1х1 через JS раз в минуту обновлять.....

smap 01.12.2003 15:50

"Странно, но это все равно не работает на событии 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>

CEO 02.12.2003 18:59

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.