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
пойду покатаю скрипт
|
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 пуст, т.е. в него ничего не записывается , хотя таф на странице был . Во всяком случае у меня так. |
да - вот у меня вверху страницы тоже появляется эта выделенная часть.  взял код который ниже подправленный. не функционирует у меня. хелп.
|
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 похоже ты как и я вставил код в хтмл , а если записать его в файл ПХП и вставлять инклудом , то всё работает. |
совершенно точно - я так и сделал  хехе. ну слаб я в этих всех делах - ничего не поделаешь. А можно вопрос? можно привести пример этой инклуд строчки? я примерно представляю - но не уверен. скажем файл я этот назову. 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 началу
|
|
|