Создать ответ 
Как добавить в Ваш замечательный скрипт статистики показывать ещё и имя пользователя
Автор Сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #11
RE: Как добавить в Ваш замечательный скрипт статистики показывать ещё и имя пользователя
Конечно можно и делается это очень просто.

Для начала вверх странички добавьте приведенный Вами код, предварительно удалив строчку

PHP код:
echo user_browser($_SERVER['HTTP_USER_AGENT']); 

Далее в нашем скрипте исправьте строку

PHP код:
else { $bot=$_SERVER['HTTP_USER_AGENT']; }

на вот такую 

else { $bot=user_browser($_SERVER['HTTP_USER_AGENT']); } 

P.S. Приведенный Вами скрипт встречал ранее, но не стал добавлять ввиду его немалого размера, хотя наверно стоило.
10.12.2011 17:52:25
Найти все сообщения Цитировать это сообщение
Incognito Не на форуме
Лейтенант
*

Сообщений: 138
У нас с: Nov 2011
Сообщение: #12
RE: Как добавить в Ваш замечательный скрипт статистики показывать ещё и имя пользователя
И снова здравствуйте! Скажите пожалуйста каким образом можно прикрутить к Вашему потрясающему скрипту определять ссылку с которой пришёл пользователь на сайт? Если это не очень сложно помогите пожалуйста реализовать эту возможность. Для облегчения решения данного вопроса публикую скрипт защиты сайта от частого посещения в котором это функция реализована:

Код:
<?php
error_reporting(0);
$address = $_SERVER['REMOTE_ADDR'];
$ref = $_SERVER['HTTP_REFERER'];
$url = urldecode($_SERVER['REQUEST_URI']);
$limit = 10;
$timenow = time();
$browser = $_SERVER['HTTP_USER_AGENT'];
$htaccess = $_SERVER['DOCUMENT_ROOT']."/.htaccess";
$dirfiles = $_SERVER['DOCUMENT_ROOT']."/antirip/logfiles/";
$logfiles = "$dirfiles".$address;
$hostname = gethostbyaddr($address);
$datetime = date("Y-m-d H:i:s");
$ip1 = getenv("HTTP_X_FORWARDED_FOR");
$ip2 = getenv("REMOTE_ADDR");
$hostip1 = gethostbyaddr($ip1);
$hostip2 = gethostbyaddr($ip2);
if ($ip1 != $ip2) {
  $htstring = NULL;
  if (!empty($ip1)) {
    preg_match_all('/[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}/', $ip1, $ip1);
    $ip1 = array_unique($ip1[0]);
    foreach ($ip1 as $v) {
      $htstring.="Deny from ".$v."    \\\\ Заблокирован Внутренний IP    \\\\ $hostip1\r\n";
    }
  }
  if (!empty($ip2)) {
    $htstring.="Deny from ".$ip2."    \\\\ Заблокирован IP Proxy    \\\\ $hostip2\r\n";
  }
} else {
  $htstring = "Deny from ".$address."    \\\\ Заблокирован Внешний IP    \\\\ $hostname\r\n";
}
$excludes = array(
"yandex.ru",
"rambler.ru",
"googlebot.com",
"webaltabot.com",
"inktomisearch.com",
"search.live.com",
"deb.telenet.ru",
"213.248.56.160",
"81.19.77.184"
);

if ($opendir = opendir($dirfiles)) {
  while (false !== ($log = readdir($opendir))) {
    if ($log != "." and $log != "..") {
      $timelog = date(filemtime("$dirfiles"."$log"));
      if ($timelog < ($timenow - 60)) {
        unlink("$dirfiles"."$log");
      }
    }
  }
}

foreach ($excludes as $v) {
  if (ereg($v, $hostname)) {exit;}
}

if (!file_exists($logfiles)) {fopen($logfiles, "w+");}
$write = "$datetime - $hostname<br>Browser: $browser<br>Referer: $ref<br>URL: $url<br>\r\n";
if ($logfiles) {
  if (is_writable($logfiles)) {
    if (!$handle = fopen($logfiles, 'a')) {exit;}
    if (fwrite($handle, $write) === FALSE) {exit;}
    fclose($handle);
  }    
}

if ((count(file($logfiles)) > $limit) and ($timelog > ($timenow - 60))) {
  if ($htaccess) {
    foreach (file($htaccess) as $h) {
      if ($h === $htstring) {
        exit;
      }
    }
    if (is_writable($htaccess)) {
      if (!$handle = fopen($htaccess, 'a')) {exit;}
      if (fwrite($handle, $htstring) === FALSE) {exit;}
      fclose($handle);
    }    
  }
}
?>

Благодарю за внимание к моему вопросу!
09.04.2012 17:47:02
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #13
RE: Как добавить в Ваш замечательный скрипт статистики показывать ещё и имя пользователя
Реализуется это довольно просто. Для этого достаточно в строчку, которая содержит все данные, которые впоследствии записываются в файл логов, добавить переменную $_SERVER['HTTP_REFERER'];

PHP код:
$lines[] = $date."|".$login."|".$bot."|".$ip."|".$home."|".$_SERVER['HTTP_REFERER']."|\r\n"

Ну и не забыть потом взять эту переменную при просмотре логов:

PHP код:
for ($si=sizeof($file)-1$si+1>sizeof($file)-$col$si--) {
   
$string=explode("|",$file[$si]);
   
$q1[$si]=$string[0]; // дата и время
   
$q2[$si]=$string[1]; // логин
   
$q3[$si]=$string[2]; // имя бота
   
$q4[$si]=$string[3]; // ip бота
   
$q5[$si]=$string[4]; // адрес посещения
   
$q6[$si]=$string[5]; // ОТКУДА БЫЛ ПЕРЕХОД НА СТРАНИЧКУ
echo '<tr bgcolor="#eeeeee"><td class="zz">'.$q1[$si].'</td>';
echo 
'<td class="zz">'.$q2[$si].'</td>';
echo 
'<td class="zz">'.$q3[$si].'</td>';
echo 
'<td class="zz">'.$q4[$si].'</td>';
echo 
'<td class="zz">'.$q5[$si].'</td>';
echo 
'<td class="zz">'.$q6[$si].'</td></tr>'

Мы, например, для подобного анализа переходов с внешних сайтов пользуемся статистикой счетчика liveinternet.ru, т.к. он показывает дополнительно переходы без ссылки.
09.04.2012 18:35:37
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #14
RE: Как добавить в Ваш замечательный скрипт статистики показывать ещё и имя пользователя
Вопрос из комментариев от Алексея:

Цитата:Здравствуйте! У меня вопрос:
Ставил Ваш потрясающий скрипт на хостинге - всё прекрасно работает, на другом хостинге при интеграции Вашего скрипта - страница загружается в пустом виде - не подскажете с чем это может быть связанно? Может версии PHP разные?

Ответы прошу направлять вот эту: http://usefulscript.ru/forum/showthread.php?tid=50 тему! Спасибо!

Трудно сказать не видя кода и сайта. От версии PHP зависеть не должно.

Непонятно следующее:
Цитата:...страница загружается в пустом виде

Наверно, имеется ввиду страница просмотра логов.

Для начала выясните, правильно ли указаны пути к файлу логов (как в скрипте записи, так и в скрипте просмотра логов). Далее следует открыть файл логов любым текстовым редактором и посмотреть, пишется ли в него что-нибудь.

Если нет, то проверить права на его изменение (запись).
09.04.2012 18:51:57
Найти все сообщения Цитировать это сообщение
Incognito Не на форуме
Лейтенант
*

Сообщений: 138
У нас с: Nov 2011
Сообщение: #15
Smile RE: Как добавить в Ваш замечательный скрипт...
Цитата:Наверно, имеется ввиду страница просмотра логов.

Благодарю Вас за быстрое решение вопроса с "откуда пришёл"! Cool

Насчёт пустой страницы, дело всё таки было в версии PHP (хостинг RU Center) на PHP4 при вставке через инклюде в index.php скрипта статистики - при открытии сайта, вместо сайта был просто "чистый лист", переставил через админку на хостере c PHP4 на PHP5 - скрипт заработал, страница отображается нормально!

Спасибо Вам огромное за Ваши знания, я вот что-то не могу никак ещё осилить PHP - слишком непонятна мне общая суть языка...
09.04.2012 20:44:13
Найти все сообщения Цитировать это сообщение
Incognito Не на форуме
Лейтенант
*

Сообщений: 138
У нас с: Nov 2011
Сообщение: #16
RE: Как добавить в Ваш замечательный скрипт статистики показывать ещё и имя пользователя
Всё отлично работает "откуда пришёл"!!! Только вот не могу никак добиться что бы вместо сухого адреса в текстовом виде была полноценная ссылка с открытием в новом окне, если вставлять вот так:

Цитата:echo '<td class="zz"><a href=" '.$q5[$si].' "></a></td>';

- но ссылка не отображается вообще, не подскажете, что я делаю не так?
09.04.2012 21:46:46
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #17
RE: Как добавить в Ваш замечательный скрипт статистики показывать ещё и имя пользователя
Вы забыли добавить анкор (отображаемый текст) ссылки.

Сделайте так:

Цитата:echo '<td class="zz"><a href=" '.$q5[$si].' ">'.$q5[$si].'</a></td>';
09.04.2012 22:29:50
Найти все сообщения Цитировать это сообщение
Incognito Не на форуме
Лейтенант
*

Сообщений: 138
У нас с: Nov 2011
Сообщение: #18
RE: Как добавить в Ваш замечательный скрипт статистики показывать ещё и имя пользователя
Спасибо, отличный результат (Я ещё добавил в ссылку target="_blank" - вообще стало удобно)! Скажите, а можно сделать шаблоны? Например, мне известно, что на мой сайт заходят с определённого топика на форуме и этот топик в своей ссылке на него имеет неизменный номер, например: forum/index.php?showtopic=278400&st=2480 - здесь номер 278400. Сделать так что если скрипт в ссылке увидит этот номер то выдавал в статистике не знакомую ссылку, а например "Это зашли из ветки Виталика"... В общем сделать некие шаблоны, штук 5 - 6?
(Последний раз сообщение было отредактировано 09.04.2012 в 23:26:05, отредактировал пользователь Incognito.)
09.04.2012 23:22:30
Найти все сообщения Цитировать это сообщение
Incognito Не на форуме
Лейтенант
*

Сообщений: 138
У нас с: Nov 2011
Сообщение: #19
RE: Как добавить в Ваш замечательный скрипт статистики показывать ещё и имя пользователя
Изменяюсь за настойчивость, ещё вопросик...
В выше упомянутом скрипте защиты ip адрес имеет вот такой вот вид: 95-28-83-227.broadband.corbina.ru, тогда как в Вашем скрипте: 95.28.83.227... Можно ли сделать так что бы Ваш скрипт тоже отображал больше информации об ip, пробовал строчки добавлять в Ваш скрипт из скрипта защиты - ничего не выходит Sad
10.04.2012 00:48:29
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #20
RE: Как добавить в Ваш замечательный скрипт статистики показывать ещё и имя пользователя
(10.04.2012 00:48:29)Incognito писал(а):  Изменяюсь за настойчивость, ещё вопросик...
В выше упомянутом скрипте защиты ip адрес имеет вот такой вот вид: 95-28-83-227.broadband.corbina.ru, тогда как в Вашем скрипте: 95.28.83.227... Можно ли сделать так что бы Ваш скрипт тоже отображал больше информации об ip, пробовал строчки добавлять в Ваш скрипт из скрипта защиты - ничего не выходит Sad

Начну с вопроса попроще. На предыдущий вопрос отвечу чуть позже.

Просто добавьте переменную:

PHP код:
gethostbyaddr($_SERVER['REMOTE_ADDR']); 

точно так же как и в сообщении №13 данной темы.
10.04.2012 18:59:10
Найти все сообщения Цитировать это сообщение
Создать ответ 


Переход:


Пользователи просматривают эту тему: 1 Гость(ей)


LiveInternet
© Copyright 2011-2024 by UsefulScript.ru