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

Сообщений: 2,279
У нас с: Aug 2011
Сообщение: #1
Скрипт ведения логов посещения сайта
Данная тема была создана для того, чтобы вынести из основной темы Скрипт ведения логов посещения сайта больших комментариев.

(22.04.2015 03:36:43)Вячеслав писал(а):От случайного стирания логов посетителей добавил файл rbase_userr.php с кодом:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Деление списка</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

<script type="text/javascript">
function deleteRecord(){
// show confirmation message
var msg = confirm("Bы действительно хотите удалить список ip адресов?");
// if users accepts, delete selected records
if(msg == true){
document.forms.frm_data.submit();
}
}
</script>
</head>

<body>
<form name="frm_data" action="rbase_user.php" method="post">
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h1><p align="center"><a href = 'jdeleteRecord()'> "Oчистить список ip-адресов"</a></p></h1>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
</form>
</body>
</html>

А в строку <form name="frm_data" action="rbase_user.php" method="post"> вписал "rbase_user.php" указанный выше в комментариях.
И теперь перед очисткой логов выходит окно предупреждения об очистке логов.
23.04.2015 21:31:39
Найти все сообщения Цитировать это сообщение
Frunzik Не на форуме
Рядовой
*

Сообщений: 6
У нас с: Jan 2016
Сообщение: #2
RE: Скрипт ведения логов посещения сайта
Большое спасибо за скрипт!HappyDrink
Может быть кому-нибудь пригодится, у себя в шаблоне в начале страниц я добавил в скрипт проверку прокси
после
PHP код:
else {
    
$file="base_user";        //имя файла с логами пользователей
    
$col_zap=3499;          //записей в логе пользователей
    
$bot=htmlspecialchars(substr($xxx,0,80));//обрезаем USER-AGENT до 80 символов

добавил
PHP код:
function get_ip() {
  if(
$_SERVER) {
    if(
$_SERVER['HTTP_X_FORWARDED_FOR'])
      
$ip $_SERVER['HTTP_X_FORWARDED_FOR'];
    elseif(
$_SERVER['HTTP_CLIENT_IP'])
      
$ip $_SERVER['HTTP_CLIENT_IP'];
    else
      
$ip $_SERVER['REMOTE_ADDR'];
  }
  else {
    if(
getenv('HTTP_X_FORWARDED_FOR'))
      
$ip getenv('HTTP_X_FORWARDED_FOR');
    elseif(
getenv('HTTP_CLIENT_IP'))
      
$ip getenv('HTTP_CLIENT_IP');
    else
      
$ip getenv('REMOTE_ADDR');
  }

  return 
$ip;

а в строке
PHP код:
$l_cash.=date("H:i:s d.m")."|".$bot."|".$_SERVER['REMOTE_ADDR']."|"
вместо $_SERVER['REMOTE_ADDR'] вставил $ip
Также было бы интересно увидеть более расширенный вывод информации по айпи, если прокси, то чтобы указывалось в отчёте Прокси. Было бы очень здорово, если можно было бы при клике в колонке IP/Proxy по IP, выподало бы ниже в <td colspan="x">&nbsp;</td> расширенная информация о посещаемом типа как в скрипте ниже - как прикрутить?
PHP код:
<?php
// Script php : Detection Proxy

@set_time_limit(0);
@
error_reporting(E_ALL E_NOTICE);

function 
get_ip() {
  if(
$_SERVER) {
    if(
$_SERVER['HTTP_X_FORWARDED_FOR'])
      
$ip $_SERVER['HTTP_X_FORWARDED_FOR'];
    elseif(
$_SERVER['HTTP_CLIENT_IP'])
      
$ip $_SERVER['HTTP_CLIENT_IP'];
    else
      
$ip $_SERVER['REMOTE_ADDR'];
  }
  else {
    if(
getenv('HTTP_X_FORWARDED_FOR'))
      
$ip getenv('HTTP_X_FORWARDED_FOR');
    elseif(
getenv('HTTP_CLIENT_IP'))
      
$ip getenv('HTTP_CLIENT_IP');
    else
      
$ip getenv('REMOTE_ADDR');
  }

  return 
$ip;
}

function 
detect_proxy($myIP) {
   
$scan_headers = array(
            
'HTTP_VIA',
            
'HTTP_X_FORWARDED_FOR',
            
'HTTP_FORWARDED_FOR',
            
'HTTP_X_FORWARDED',
            
'HTTP_FORWARDED',
            
'HTTP_CLIENT_IP',
            
'HTTP_FORWARDED_FOR_IP',
            
'VIA',
            
'X_FORWARDED_FOR',
            
'FORWARDED_FOR',
            
'X_FORWARDED',
            
'FORWARDED',
            
'CLIENT_IP',
            
'FORWARDED_FOR_IP',
            
'HTTP_PROXY_CONNECTION'
        
);

   
$flagProxy false;
   
$libProxy 'No';

   foreach(
$scan_headers as $i)
            if(
$_SERVER[$i]) $flagProxy true;

   if (    
in_array($_SERVER['REMOTE_PORT'], array(8080,80,6588,8000,3128,553,554))
        || @
fsockopen($_SERVER['REMOTE_ADDR'], 80$errno$errstr30))
      
$flagProxy true;

   
// Proxy LookUp
   
if ( $flagProxy == true &&
        isset(
$_SERVER['REMOTE_ADDR']) &&
        !empty(
$_SERVER['REMOTE_ADDR']) )
         
// Transparent Proxy
         // REMOTE_ADDR = proxy IP
         // HTTP_X_FORWARDED_FOR = your IP
         
if ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) &&
              !empty(
$_SERVER['HTTP_X_FORWARDED_FOR']) &&
              
$_SERVER['HTTP_X_FORWARDED_FOR'] == $myIP
            
)
             
$libProxy 'Transparent Proxy';
               
// Simple Anonymous Proxy
              // REMOTE_ADDR = proxy IP
              // HTTP_X_FORWARDED_FOR = proxy IP
         
else if ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) &&
                   !empty(
$_SERVER['HTTP_X_FORWARDED_FOR']) &&
                   
$_SERVER['HTTP_X_FORWARDED_FOR'] == $_SERVER['REMOTE_ADDR']
                 )
                 
$libProxy 'Simple Anonymous (Transparent) Proxy';
              
// Distorting Anonymous Proxy
              // REMOTE_ADDR = proxy IP
              // HTTP_X_FORWARDED_FOR = random IP address
              
else if ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) &&
                        !empty(
$_SERVER['HTTP_X_FORWARDED_FOR']) &&
                        
$_SERVER['HTTP_X_FORWARDED_FOR'] != $_SERVER['REMOTE_ADDR']
                      )
                      
$libProxy 'Distorting Anonymous (Transparent) Proxy';
                   
// Anonymous Proxy
                   // HTTP_X_FORWARDED_FOR = not determined
                   // HTTP_CLIENT_IP = not determined
                   // HTTP_VIA = determined
                   
else if ( $_SERVER['HTTP_X_FORWARDED_FOR'] == '' &&
                             
$_SERVER['HTTP_CLIENT_IP'] == '' &&
                             !empty(
$_SERVER['HTTP_VIA'])
                           )
                           
$libProxy 'Anonymous Proxy';
                        
// High Anonymous Proxy
                        // REMOTE_ADDR = proxy IP
                        // HTTP_X_FORWARDED_FOR = not determined
                        
else
                           
$libProxy 'High Anonymous Proxy';

   return 
$libProxy;
}

$ip get_ip();

echo 
'Proxy Server Detection<br>';
echo 
'=================<br><br>';
$typeProxy detect_proxy($ip);
echo 
'Use Proxy Server : '.$typeProxy.'<br>';
echo 
'<br>';
echo 
'Brief IP Information'.'<br>';
echo 
'--------------------'.'<br>';
echo 
'Your IP : '.$ip.'<br>';
echo 
'Language : '.$_SERVER['HTTP_ACCEPT_LANGUAGE'].'<br>';
echo 
'<br>';
echo 
'Detail IP Information'.'<br>';
echo 
'---------------------'.'<br>';
echo 
'HTTP_ACCEPT : '.$_SERVER['HTTP_ACCEPT'].'<br>';
echo 
'HTTP_ACCEPT_ENCODING : '.$_SERVER['HTTP_ACCEPT_ENCODING'].'<br>';
echo 
'HTTP_ACCEPT_LANGUAGE : '.$_SERVER['HTTP_ACCEPT_LANGUAGE'].'<br>';
echo 
'HTTP_ACCEPT_CHARSET : '.$_SERVER['HTTP_ACCEPT_CHARSET'].'<br>';
echo 
'HTTP_CONNECTION : '.$_SERVER['HTTP_CONNECTION'].'<br>';
echo 
'HTTP_HOST : '.$_SERVER['HTTP_HOST'].'<br>';
echo 
'HTTP_KEEP_ALIVE : '.$_SERVER['HTTP_KEEP_ALIVE'].'<br>';
echo 
'HTTP_USER_AGENT : '.$_SERVER['HTTP_USER_AGENT'].'<br>';
echo 
'REMOTE_HOST : '.@gethostbyaddr($_SERVER['REMOTE_ADDR']).'<br>';
echo 
'REMOTE_PORT : '.$_SERVER['REMOTE_PORT'].'<br>';
echo 
'<br>';
echo 
'REMOTE_ADDR : '.$_SERVER['REMOTE_ADDR'].'<br>';
echo 
'HTTP_VIA : '.$_SERVER['HTTP_VIA'].'<br>';
echo 
'HTTP_X_FORWARDED_FOR : '.$_SERVER['HTTP_X_FORWARDED_FOR'].'<br>';
echo 
'HTTP_PROXY_CONNECTION : '.$_SERVER['HTTP_PROXY_CONNECTION'].'<br>';
echo 
'HTTP_CLIENT_IP : '.$_SERVER['HTTP_CLIENT_IP'].'<br>';
?>
Заранее спасибо за помощь Be
02.02.2016 12:30:57
Найти все сообщения Цитировать это сообщение
nikitgh Не на форуме
Рядовой
*

Сообщений: 1
У нас с: May 2016
Сообщение: #3
RE: Скрипт ведения логов посещения сайта
Здравствуйте,
Я о обновленном скрипте
Постоянно пишет предупреждения в лог, такие как:
[20-May-2016 18:19:37 UTC] PHP Warning: flock() expects parameter 1 to be resource, boolean given in /home/u91653****/public_html/n/3.php on line 54
[20-May-2016 18:19:37 UTC] PHP Warning: fseek() expects parameter 1 to be resource, boolean given in /home/u91653****/public_html/n/3.php on line 55
[20-May-2016 18:19:37 UTC] PHP Warning: feof() expects parameter 1 to be resource, boolean given in /home/u91653****/public_html/n/3.php on line 56
[20-May-2016 18:19:37 UTC] PHP Warning: fread() expects parameter 1 to be resource, boolean given in /home/u91653****/public_html/n/3.php on line 56
Sad
21.05.2016 15:04:12
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,279
У нас с: Aug 2011
Сообщение: #4
RE: Скрипт ведения логов посещения сайта
В тексте ошибки же сказано, что в первом параметре функции Вы передаете булево значение. Следовательно, указанного файла скорее всего не существует. Проверьте правильность указанного имени и пути к файлу, в который будут записываться логи.
21.05.2016 19:06:43
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,279
У нас с: Aug 2011
Сообщение: #5
RE: Скрипт ведения логов посещения сайта
Следующие три сообщения были перенесены из комментариев к теме Скрипт ведения логов посещения сайта

(24.05.2016 04:07:41)Вячеслав писал(а):Здравствуйте!
Скажите, пожалуйста, а как же быть, если будет пару тысяч записей, как же они все покажутся на странице? Есть что-то типа вроде пагинации?
Я вижу строчки:

echo '</table>';
echo '<br>Просмотреть последние <a href=?col=100>100</a> <a href=?col=500>500</a> ';
echo '<a href=?col=1000>1000</a> посещений.';
echo '<br>Просмотреть <a href=?col='.sizeof($file).'>все посещения</a>.';
echo '</center></body></html>';

Но как они связаны и работают я что-то не понимаю.
Поясните, прошу

(24.05.2016 14:34:57)Вячеслав писал(а):Здравствуйте!
У меня не работает
<a href=?col=100>100</a>
В админке лежит код и при нажатии на посмотреть последние 100 посещений не выводит.
Подскажите, как исправить и как этот момент работает.
Спасибо!

(24.05.2016 14:44:56)Вячеслав писал(а):У меня список посещений выводится вот по такому адресу:
http://адрес_сайта/admin/?view=visitor_logs
а когда я нажимаю <a href=?col=100>100</a>
то ничего выходит так как адрес меняется вот на такой:
http://адрес_сайта/admin/?col=100

Давно мучаюсь как решить, но никто нигде не может помочь.
24.05.2016 22:25:27
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,279
У нас с: Aug 2011
Сообщение: #6
RE: Скрипт ведения логов посещения сайта
Принцип работы довольно прост.
Скрипт берет значение GET переменной col и выводит указанное количество последних строк лога.

Если у Вас логи выводятся по адресу:
http://адрес_сайта/admin/?view=visitor_logs

то для того чтобы ограничить лог, например, 500 строками необходимо сделать ссылку вида:
http://адрес_сайта/admin/?view=visitor_logs&col=500
24.05.2016 22:29:16
Найти все сообщения Цитировать это сообщение
Вячеслав Не на форуме
Рядовой
*

Сообщений: 1
У нас с: May 2016
Сообщение: #7
RE: Скрипт ведения логов посещения сайта
(24.05.2016 22:29:16)Admin писал(а):  Принцип работы довольно прост.
Скрипт берет значение GET переменной col и выводит указанное количество последних строк лога.

Если у Вас логи выводятся по адресу:
http://адрес_сайта/admin/?view=visitor_logs

то для того чтобы ограничить лог, например, 500 строками необходимо сделать ссылку вида:
http://адрес_сайта/admin/?view=visitor_logs&col=500

Спасибо большое! Всё получилось!
25.05.2016 04:12:23
Найти все сообщения Цитировать это сообщение
Создать ответ 


Переход:


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



Mail.ru LiveInternet

© Copyright 2011-2016 by UsefulScript.ru