Реклама на сайте Advertise with us
Тема: Код счетчика на php - ref/visit Расширенный поиск по форуму
 
Внимание! В связи с устареванием топика эта страница была взята из кэша.
Автор Сообщение
Информация о пользователе alt


Зарегистрирован: 18.04.03
Сообщения: 351
Ссылка на сообщениеДобавлено: 16/07/04 в 06:18     

Всего два поля надо откуда и сколько пришло, как написать такое?

K началу

 
Информация о пользователе Rubilnik


Зарегистрирован: 02.05.04
Сообщения: 186
Ссылка на сообщениеДобавлено: 16/07/04 в 07:17     

Примерно так:

Это в начало кода страницы, для которой нужна статистика:
<?php
$ref=getenv("HTTP_REFERER");
if (isset($referer)):

$refs = file("count.dat");
$d=count($refs);
for($i = 0; $i < $d; $i++)
{
list($refferer, $ref_cnt) = explode("::","$refs[$i]");
if($refferer != "" && $ref_cnt != ""):
if($ref == $refferer):
$new_ref_cnt = $ref_cnt + 1;
$puts[] = "$ref::$new_ref_cnt::::\r\n";
else:
$puts[] = "$refferer::$ref_cnt::::\r\n";
endif;
endif;
}
if (!isset($new_ref_cnt)) { $new_ref_cnt = 1; }
if(isset($puts)):
foreach($puts as $i=>$str)
{
if($str=="$ref::$new_ref_cnt::::\r\n")
{
$ok=$i;
break;
}
}
foreach($puts as $j=>$str)
{
if($ok==$j) { $puts[$ok]="$ref::$new_ref_cnt::::\r\n"; break;}
}
endif;
$fr = fopen($refferer_data,"w");
flock($fr,2);
if (isset($puts)):
foreach ($puts as $put) { fputs($fr,$put); }
else:
fputs($fr, "$ref::1::::\r\n");
endif;
flock($fr,3);
fclose($fr);

endif;
?>

Это вывод результатов:
<?php
$ref_array = file("count.dat");
if(isset($ref_array) && count($ref_array) != 0):
foreach($ref_array as $refs)
{
list($ref,$cnt) = explode("::", $refs);
$ref = wordwrap( $ref, 90, "\n", 1);
$new_ref_array[$ref] = $cnt;
}
arsort($new_ref_array);
$r = 0;
foreach($new_ref_array as $ref=>$cnt)
{
$r++;
echo "<tr>";
echo "<td width=\"470\" align=\"left\" class=\"p\" bgcolor=\"#FFFFFF\">$ref</td>";
echo "<td width=\"128\" align=\"center\" class=\"p\" bgcolor=\"#FFFFFF\">$cnt</td>";
echo "</tr>";
if($r == $maxref) { break; }
}
endif;
?>

Создай файл count.dat, и положи в папку со своей страницей. Не забудь права для него 666 установить.

Честно скажу не проверял, но должно сработать. Если что-напиши, подправлю.

K началу

 
Информация о пользователе Flesh


Зарегистрирован: 13.01.03
Сообщения: 877
Ссылка на сообщениеДобавлено: 16/07/04 в 07:43     

Мне тоже весьма не помешает эта фишка!
Спасибо за код.
не пробовал - так как имею маленькое уточнение.

В count.dat этот код прописывать да?

Это вывод результатов:
<?php
$ref_array = file("count.dat");
if(isset($ref_array) && count($ref_array) != 0):
foreach($ref_array as $refs)
{
list($ref,$cnt) = explode("::", $refs);
$ref = wordwrap( $ref, 90, "\n", 1);
$new_ref_array[$ref] = $cnt;
}
arsort($new_ref_array);
$r = 0;
foreach($new_ref_array as $ref=>$cnt)
{
$r++;
echo "<tr>";
echo "<td width=\"470\" align=\"left\" class=\"p\" bgcolor=\"#FFFFFF\">$ref</td>";
echo "<td width=\"128\" align=\"center\" class=\"p\" bgcolor=\"#FFFFFF\">$cnt</td>";
echo "</tr>";
if($r == $maxref) { break; }
}
endif;
?>

K началу

 
Информация о пользователе Rubilnik


Зарегистрирован: 02.05.04
Сообщения: 186
Ссылка на сообщениеДобавлено: 16/07/04 в 07:58     

Цитата:
В count.dat этот код прописывать да?

Нет, count.dat изначально пустой. Там будут данные храниться.
А код для показа можно например в stst.php сохранить. А потом вызывать его для просмотра статистики.

K началу

 
Информация о пользователе Flesh


Зарегистрирован: 13.01.03
Сообщения: 877
Ссылка на сообщениеДобавлено: 16/07/04 в 08:21     

понято!
большое спасибо!
буду пробовать...

K началу

 
Информация о пользователе alt


Зарегистрирован: 18.04.03
Сообщения: 351
Ссылка на сообщениеДобавлено: 16/07/04 в 17:57     

Rubilnik +6

пойду покатаю скрипт icon_smile.gif

K началу

 
Информация о пользователе Elefant


Зарегистрирован: 22.11.02
Сообщения: 54
Ссылка на сообщениеДобавлено: 17/07/04 в 02:21     

Rubilnik писал:

<?php
$ref=getenv("HTTP_REFERER");
if (isset($referer)):
$refs = file("count.dat");
$d=count($refs);
for($i = 0; $i < $d; $i++)
{
list($refferer, $ref_cnt) = explode("::","$refs[$i]");
if($refferer != "" && $ref_cnt != ""):
if($ref == $refferer):
$new_ref_cnt = $ref_cnt + 1;
$puts[] = "$ref::$new_ref_cnt::::\r\n";
else:
$puts[] = "$refferer::$ref_cnt::::\r\n";
endif;
endif;
}
if (!isset($new_ref_cnt)) { $new_ref_cnt = 1; }
if(isset($puts)):
foreach($puts as $i=>$str)
{
if($str=="$ref::$new_ref_cnt::::\r\n")
{
$ok=$i;
break;
}
}
foreach($puts as $j=>$str)
{
if($ok==$j) { $puts[$ok]="$ref::$new_ref_cnt::::\r\n"; break;}
}
endif;
$fr = fopen($refferer_data,"w");
flock($fr,2);
if (isset($puts)):
foreach ($puts as $put) { fputs($fr,$put); }
else:
fputs($fr, "$ref::1::::\r\n");
endif;
flock($fr,3);
fclose($fr);
endif;
?>



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

K началу

 
Информация о пользователе Rubilnik


Зарегистрирован: 02.05.04
Сообщения: 186
Ссылка на сообщениеДобавлено: 17/07/04 в 02:38     

Цитата:
Выделенная часть выводится вверху страницы, а файл count.dat пуст, т.е. в него ничего не записывается , хотя таф на странице был . Во всяком случае у меня так.

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

Скрипт счетчика:
<?php
$ref=getenv("HTTP_REFERER");
if (isset($ref)):
$refs = file("count.dat");
$d=count($refs);
for($i = 0; $i < $d; $i++)
{
list($refferer, $ref_cnt) = explode("::","$refs[$i]");
if($refferer != "" && $ref_cnt != ""):
if($ref == $refferer):
$new_ref_cnt = $ref_cnt + 1;
$puts[] = "$ref::$new_ref_cnt::::\r\n";
else:
$puts[] = "$refferer::$ref_cnt::::\r\n";
endif;
endif;
}
if (!isset($new_ref_cnt)) { $new_ref_cnt = 1; }
if(isset($puts)):
foreach($puts as $i=>$str)
{
if($str=="$ref::$new_ref_cnt::::\r\n")
{
$ok=$i;
break;
}
}
foreach($puts as $j=>$str)
{
if($ok==$j) { $puts[$ok]="$ref::$new_ref_cnt::::\r\n"; break;}
}
endif;
$fr = fopen("count.dat","w");
flock($fr,2);
if (isset($puts)):
foreach ($puts as $put) { fputs($fr,$put); }
else:
fputs($fr, "$ref::1::::\r\n");
endif;
flock($fr,3);
fclose($fr);
endif;
?>


Скрипт вывода статистики:
<?php
$ref_array = file("count.dat");
if(isset($ref_array) && count($ref_array) != 0):
foreach($ref_array as $refs)
{
list($ref,$cnt) = explode("::", $refs);
$ref = wordwrap( $ref, 90, "\n", 1);
$new_ref_array[$ref] = $cnt;
}
arsort($new_ref_array);
$r = 0;
foreach($new_ref_array as $ref=>$cnt)
{
$r++;
echo $ref." - ".$cnt."<br>";
}
endif;
?>

K началу

 
Информация о пользователе Elefant


Зарегистрирован: 22.11.02
Сообщения: 54
Ссылка на сообщениеДобавлено: 17/07/04 в 13:40     

Rubilnik писал:
Теперь точно все ровно работает.


Теперь и вправду всё работает. Спасибо.
(хоть этот скрип и не я просил)
Можно было-бы добавить ещё в статистику :
сегодня и всего

K началу

 
Информация о пользователе just_beginner


Зарегистрирован: 07.05.04
Сообщения: 606
Ссылка на сообщениеДобавлено: 17/07/04 в 17:03     

Щас времени нет, могет через пару часов выложу свой вариант. А пока скажите кто нить, траф с каких стран считается плохим, ну Россия (наверно правильнее "весь СНГ"), Китай и т.д. Для небольшой ТДС'ки нужно. Готовый скрип обещаю выложить.

Последний раз редактировалось: just_beginner (17/07/04 в 20:38), всего редактировалось 1 раз

K началу

 
Информация о пользователе just_beginner


Зарегистрирован: 07.05.04
Сообщения: 606
Ссылка на сообщениеДобавлено: 17/07/04 в 20:34     

Вот, попробуй (снято в связи с тем что я недоглядел кое-чего)

Последний раз редактировалось: just_beginner (18/07/04 в 00:52), всего редактировалось 1 раз

K началу

 
Информация о пользователе Elefant


Зарегистрирован: 22.11.02
Сообщения: 54
Ссылка на сообщениеДобавлено: 17/07/04 в 22:37     

just_beginner писал:
Вот, попробуй этот.


Попробовал,
1 если база пустая на stat.php пишет:
Warning: Division by zero in /usr/local/psa/home/vhosts/boobs-castle.com/httpdocs/count/stat.php on line 35

2 в Адреса хостов отображается только первый по списку УРЛ, и у тебе отображается "куда пришли" , а надо бы "откуда" как у Rubilnik

3 если можно сделать как у Rubilnik : напротив УРЛ сколько с него пришло.

K началу

 
Информация о пользователе just_beginner


Зарегистрирован: 07.05.04
Сообщения: 606
Ссылка на сообщениеДобавлено: 17/07/04 в 23:02     

2Elefant:

Цитата:
1 если база пустая на stat.php пишет:
Warning: Division by zero in /usr/local/psa/home/vhosts/boobs-castle.com/httpdocs/count/stat.php on line 35

Законов математики ещё никто не отменял. Если серьезно то лень было мелочью заняться. Этот скрипт был написан минут за 20 и поэтому возможно там есть недочеты.
Цитата:
2 в Адреса хостов отображается только первый по списку УРЛ, и у тебе отображается "куда пришли" , а надо бы "откуда" как у Rubilnik

Там отображается строка $_SERVER['HTTP_HOST']. Т.е. хост откуда пришел дроч.
Цитата:
3 если можно сделать как у Rubilnik : напротив УРЛ сколько с него пришло.

Да конечно можно. Можно еще много чего добавить. Только это проще и быстрее сделать с использованием MySQL. Незнаю, я как то с самого начала не взлюбил работу с файлами. Если будет время, накатаю. Он и мне тоже пригодится. [/code]

K началу

 
Информация о пользователе Elefant


Зарегистрирован: 22.11.02
Сообщения: 54
Ссылка на сообщениеДобавлено: 17/07/04 в 23:41     

just_beginner писал:

Там отображается строка $_SERVER['HTTP_HOST']. Т.е. хост откуда пришел дроч.

Странно , я в count.dat вижу только хост на котором используется каунт и айпи серфера.

Цитата:

Только это проще и быстрее сделать с использованием MySQL.


Уж лутше без MySQL, поскольку на все фришники баз не напасешся, или тогда придется делать каунт с разделной статистикой

K началу

 
Информация о пользователе Rubilnik


Зарегистрирован: 02.05.04
Сообщения: 186
Ссылка на сообщениеДобавлено: 17/07/04 в 23:49     

Мораль: используйте сервисы учета статистики!

K началу

 
Информация о пользователе Elefant


Зарегистрирован: 22.11.02
Сообщения: 54
Ссылка на сообщениеДобавлено: 18/07/04 в 00:25     

Rubilnik писал:
Мораль: используйте сервисы учета статистики!


Так ведь нужна не подробная статистика, а всего лиш откуда , сколько и чтобы на PHP , плюс мелочи.

K началу

 
Информация о пользователе just_beginner


Зарегистрирован: 07.05.04
Сообщения: 606
Ссылка на сообщениеДобавлено: 18/07/04 в 10:30     

2All: Вот берите тут

K началу

 
Информация о пользователе just_beginner


Зарегистрирован: 07.05.04
Сообщения: 606
Ссылка на сообщениеДобавлено: 18/07/04 в 10:36     

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

K началу

 
Информация о пользователе just_beginner


Зарегистрирован: 07.05.04
Сообщения: 606
Ссылка на сообщениеДобавлено: 19/07/04 в 00:04     

2All: Ну и что, он нафиг никому не нужен? Хыть кто нить использует его?

K началу

 
Информация о пользователе Flesh


Зарегистрирован: 13.01.03
Сообщения: 877
Ссылка на сообщениеДобавлено: 19/07/04 в 08:22     

Elefant писал:
Выделенная часть выводится вверху страницы, а файл count.dat пуст, т.е. в него ничего не записывается , хотя таф на странице был . Во всяком случае у меня так.


да - вот у меня вверху страницы тоже появляется эта выделенная часть. icon_sad.gif
взял код который ниже подправленный.
не функционирует у меня.
хелп.

K началу

 
Информация о пользователе Elefant


Зарегистрирован: 22.11.02
Сообщения: 54
Ссылка на сообщениеДобавлено: 19/07/04 в 12:55     

just_beginner писал:
2All: Ну и что, он нафиг никому не нужен? Хыть кто нить использует его?


Попробовал твой каунт, но это не совсем то что я искал, поэтому использую каунт Rubilnik - а .

Flesh похоже ты как и я вставил код в хтмл , а если записать его в файл ПХП и вставлять инклудом , то всё работает.

K началу

 
Информация о пользователе Rubilnik


Зарегистрирован: 02.05.04
Сообщения: 186
Ссылка на сообщениеДобавлено: 19/07/04 в 13:03     

Цитата:
Flesh похоже ты как и я вставил код в хтмл , а если записать его в файл ПХП и вставлять инклудом , то всё работает.

Абсолютно правильно.

K началу

 
Информация о пользователе Flesh


Зарегистрирован: 13.01.03
Сообщения: 877
Ссылка на сообщениеДобавлено: 19/07/04 в 18:15     

Elefant писал:
а .
Flesh похоже ты как и я вставил код в хтмл , а если записать его в файл ПХП и вставлять инклудом , то всё работает.


совершенно точно - я так и сделал icon_smile.gif
хехе. ну слаб я в этих всех делах - ничего не поделаешь.
А можно вопрос?
можно привести пример этой инклуд строчки?
я примерно представляю - но не уверен.
скажем файл я этот назову. in.php
как тогда будет строка инклуда выглядеть?
и куда лучше в ставлять? в хеад или боди?
сенкс!

K началу

 
Информация о пользователе Elefant


Зарегистрирован: 22.11.02
Сообщения: 54
Ссылка на сообщениеДобавлено: 19/07/04 в 23:21     

Flesh писал:

можно привести пример этой инклуд строчки?
я примерно представляю - но не уверен.
скажем файл я этот назову. in.php


<!--#include virtual="counter/in.php" -->

и вставляй в самый верх , перед началом ХТМЛ кода

K началу

 
Информация о пользователе Flesh


Зарегистрирован: 13.01.03
Сообщения: 877
Ссылка на сообщениеДобавлено: 20/07/04 в 01:02     

Elefant писал:
<!--#include virtual="counter/in.php" -->
и вставляй в самый верх , перед началом ХТМЛ кода


Благо Вам дарю!

K началу

 
Информация о пользователе alt


Зарегистрирован: 18.04.03
Сообщения: 351
Ссылка на сообщениеДобавлено: 20/07/04 в 03:57     

Цитата:
<!--#include virtual="counter/in.php" -->

и вставляй в самый верх , перед началом ХТМЛ кода


в shtml по сказке положено, или в htaccess приравнять предварительно html=shtml.

2 just_beginner:
Скрипт не смотрел, будет время поставлю, скажу впечатления.

Насчет скрипта с расширенными возможностями, можно кастрировать
вот это скрипт http://cgi.myweb.ru/script.phtml?s_id=3459&ca_id=258&cp_level= на предмет javascripta, и передавать рефер через Php, у меня получлось.

А вообще у Рубильника то что надо скрипт, огромный сенкс!

K началу

 
Информация о пользователе Elefant


Зарегистрирован: 22.11.02
Сообщения: 54
Ссылка на сообщениеДобавлено: 20/07/04 в 12:44     

Rubilnik
Замечен баг - счетчик периодически удаляет записи в ДАТ файле . За сутку удалил 4 записи .

K началу

 
Информация о пользователе Rubilnik


Зарегистрирован: 02.05.04
Сообщения: 186
Ссылка на сообщениеДобавлено: 21/07/04 в 11:07     

Цитата:
Rubilnik
Замечен баг - счетчик периодически удаляет записи в ДАТ файле . За сутку удалил 4 записи .

Да вроде не должно. А удаляет последние?

K началу

 
Информация о пользователе Elefant


Зарегистрирован: 22.11.02
Сообщения: 54
Ссылка на сообщениеДобавлено: 21/07/04 в 13:50     

Rubilnik писал:
А удаляет последние?


Трудно сказать, я переодически скачивал ДАТ файл и заметил , что рефы исчезли , причем с разным количесвом заходов. От количества заходов точно не зависит , т.к. удалён и реф с одним заходом.

K началу

 
Информация о пользователе Rubilnik


Зарегистрирован: 02.05.04
Сообщения: 186
Ссылка на сообщениеДобавлено: 21/07/04 в 18:04     

Я его у себя запустил. Понаблюдаю, может увижу, в чем ошибка.

K началу

 
Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!
Внимание! В связи с устареванием топика эта страница была взята из кэша.

Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »