Jump to content

Счетчик уникальных посетителей


Recommended Posts

Скачал счетчик "cookies txt counter"

Код следующий:

$file = "includes/counter/visitors";$EXPIRE_DATE = 86400;if (file_exists($file)) {$fp = fopen("$file", "r+");flock($fp, 1);$count = fgets($fp, 4096);if ($visited == "") {	$count += 1; 	setcookie("visited", $count, time()+$EXPIRE_DATE , "/", $SERVER_NAME);	fseek($fp,0);	fputs($fp, $count);}flock($fp, 3);fclose($fp);} else {echo "Can't find file, check '\$file' var...<BR>";}echo $count

В ридми написано:

Change permissions to 'visitors' for be writing by nobody (chmod a+rw)

Тоесть поставить права запрещающие на запись. (555)

В результате как там есть 1 так и есть, ктоб не заходил :D

Вот и не разберусь, толи в самом коде что то не так, толи с CHMOD...

Link to comment
Share on other sites

Change permissions to 'visitors' for be writing by nobody (chmod a+rw)

Вероятно имелось в виду "Измените разрешения для папки "visitors", чтобы в нее могли писать все", а не "никто не мог писать". Попробуй разрешить запись.

Link to comment
Share on other sites

Пардон, не посмотрел особо на скрипт, по моему, в нем ошибка при установке cookie - она не может быть установлена после отправки заголовков.

Link to comment
Share on other sites

Siberex:

А поподробнее можно про код? :)

Может альтернативный есть какой нибудь. Вчера часа 2 лазил по сайтам, качал счетчики, сложные какие то все. Простой нашел только этот.

Если изменить chmod на запись всем, считает каждое обновление страницы (хиты)

Link to comment
Share on other sites

Скрипты погляди на http://cgi.myweb.ru

Если будет время, посмотрю этот скрипт.

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

Link to comment
Share on other sites

Siberex:

Был бы очень признателен :)

Как раз на cgi.myweb.ru и woweb.ru и искал. Основная масса сложных или графических.

А мне надо простенький, типа этого. Ни к чему опрелять IP, строить графики, статистика на каждый день, MySQL и т.д.

Просто общий четчик за все время сайта.

Link to comment
Share on other sites

Siberex:

Был бы очень признателен :)

Как раз на cgi.myweb.ru и woweb.ru и искал. Основная масса сложных или графических.

А мне надо простенький, типа этого. Ни к чему опрелять IP, строить графики, статистика на каждый день, MySQL и т.д.

Просто общий четчик за все время сайта.

если хочешь я могу написать тебе такой счетчик за короткое время =)

Alexander-V-Sh: насчет кода счетчика - код нормальный если впереди перед кукисом ничего не выводится (где инклюдис) =)

Link to comment
Share on other sites

Вот примерно так это должно выглядеть:

$file = "./test/visit/123.txt";$EXPIRE_DATE = 86400; //время жизни cookie в секундахif (file_exists($file)) {$fp = fopen("$file", "r+");$count = fgets($fp, 1024);if (!isset($_COOKIE["visited"]) || $_COOKIE["visited"]=="") {	$count += 1; 	setcookie("visited", $count, time()+$EXPIRE_DATE , "/", $SERVER_NAME);	fseek($fp,0);	fputs($fp, $count);}fclose($fp); echo $count."<br />";} else {echo "Ошибка. Не найден файл счётчика...<br />";}

К файлу "test/visit/123.txt" не должно быть доступа ни у кого, кроме сервера. Скрипт должен размещаться перед выводом страницы.

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

Edited by Siberex
Link to comment
Share on other sites

Siberex:

Установил код, вроде работает :) 3х разных посчитал, одного и того же не считает.

Спасибо большое :)

Вот только код находится в футере, который один на весь сайт, подругому никак...

Link to comment
Share on other sites

Хм, по-хорошему надо в header'е, в футере вообще cookie устанавливать не должен. Но раз работает - не заморачивайся :)

И ещё, если PHP сконфигурирован абы-как и используется Apache из первой линейки, то одновременное выполнение скрипта с разных страниц и адресов может вызвать непредсказуемые последствия. Ну, т.е. как максимум - слет Apache'а.

Edited by Siberex
Link to comment
Share on other sites

Siberex:

PHP у меня абы как :sm(100):) я жиж незнаю его нифига, ляпаю методом - лишь бы заработало. (изменил - обновил страничку, вышло, значит ОК).

А какая разница футер или хидер? Все собирается же в кучу из theme.php. Поидеи можно в mainfile добавить коды счетчиков, а в футер вывести переменную. (движок нюк). А футер удобнее, не в шапке же цифирки вешать :)

А какой линейки апачи я понятия не имею (псв-хост)

Link to comment
Share on other sites

echo $count; можно повесить в любом месте, просто само тело скрипта (точнее та часть, где устанавливаются cookie) должно находиться до вывода чего-либо другого.

Поидеи можно в mainfile добавить коды счетчиков, а в футер вывести переменную.

Вот я это и имел в виду :)

Если хостинг организовывал не сам, то за настройку PHP можно не беспокоится - у хостера все ок должно быть настроено.

Если используешь движок Nuke, то там есть встроенный счетчик (насчет старых версий не уверен, в новых точно есть), посмотри здесь: http://rus-phpnuke.com

Link to comment
Share on other sites

Siberex:

Перетащил в майнфайл :)

Встроенные счетчики я удалил, когда оптимизацию делал. С 100-150 запросов в базу, сейчас у около 15.

Счетчик тикает, ошибок не наблюдается, тему можно считать закрытой :) (пока апач не рухнул или еще какое ЧП :) )

Еще раз ГРОМАДНОЕ Спасибо!!!

Link to comment
Share on other sites

Помогите скрипт не работает :) :)

<html>

<head><title>JavaScript</title>

<script language="javascript"type="text/javascript">

<!--

function email()

{

var a=document.form1.email.value;

if (a == "")

{

alert ("Вы не ввели свой адресс E-mail.")

}

else

{

if (a.indexOf ("@") == 0 || a.indexOf ("@") == -1)

{

alert ("Вы ввели неправильно свой адресс E-mail.")

}

else

{

if (a.lastindexof (".ru") != 0,2)

{

alert ("Вы ввели неправильно свой адресс E-mail.")

}

}

}

}

//-->

</script>

</head>

<body>

<form name="form1">

<input type="text" name="email">

<input type="button" value="ok" onClick="email()">

</form>

</body>

</html>

Link to comment
Share on other sites

alex45:

Это оффтопик! Создавай темы в своих разделах, а не в чужих.

А скрипт не работает потому, что имя функции и имя объекта формы совпадают:

function email()

...

<input type="text" name="email">

Edited by Siberex
Link to comment
Share on other sites

  • 3 weeks later...

Еще такая вот проблемка.

Если открыт - http://www.site.ru/

То все ОК.

Если же открыто - http://site.ru/

То опера каждое обновление страницы считает за уникального. В ослике все нормально.

Где стоит посмотреть? В настройках и конфигах движка (PHP Nuke), в htaccess или в самом коде счетчика что то?

Link to comment
Share on other sites

У тебе наверника $SERVER_NAME www.site.ru

И записиваеть твой скрипт cookie на www.site.ru а не на site.ru...

Link to comment
Share on other sites

Есть такая фигня, но только в админке. Если написано сервер - www - то только http://www.site.ru/admin.php так можно попасть, на http://site.ru/admin.php не пустит. И наоборот.

Ставил поразному, не помогает. Все равно.

Локально работает все. 1 раз записывает на http://www.site.ru/ и один раз на http://site.ru/ и больше не считает.

У хостера спросить?

Link to comment
Share on other sites

Alexander-V-Sh

Попробуй заменить:

setcookie("visited", $count, time()+$EXPIRE_DATE , "/", $SERVER_NAME);

На:

setcookie("visited", $count, time()+$EXPIRE_DATE , "/", "");

это должно решит проблему

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...