JavaScript

Как сделать чтобы, когда гость попадает на мой сайт его IP заносился в log, список или базу данных SQL?

ZB
Zharaskhan Bekniyazov
1 406
<?php
$file="base.log"; //куда пишем логи
$col_zap=4999; //строк в файле не более

function getRealIpAddr() {
if (!empty($_SERVER['HTTP_CLIENT_IP'])) // Определяем IP
{ $ip=$_SERVER['HTTP_CLIENT_IP']; }
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) // Если IP идёт через прокси
{ $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; }
else { $ip=$_SERVER['REMOTE_ADDR']; }
return $ip;
}

if (strstr($_SERVER['HTTP_USER_AGENT'], 'YandexBot')) {$bot='YandexBot';}
elseif (strstr($_SERVER['HTTP_USER_AGENT'], 'Googlebot')) {$bot='Googlebot';}
else { $bot=$_SERVER['HTTP_USER_AGENT']; }

$ip = getRealIpAddr();
$date = date("H:i:s d.m.Y"); //дата события
$home = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; //какая страница сайта
$lines = file($file);
while(count($lines) > $col_zap) array_shift($lines);
$lines[] = $date."|".$bot."|".$ip."|".$home."|\r\n";
file_put_contents($file, $lines);
?>
Либо, если у Вас на каждой страничке подгружается какой-нибудь php-файл через include, то поместите данный выше код в тот самый подгружаемый php-файл.

Для просмотра результатов лога, создайте php-файл с любым названием и поместите в него следующий PHP код:
<?php
if (isset($_GET[col])) $col=$_GET[col];
else $col=50;
$file=file("base.log"); ?>

<?php
if ($col>sizeof($file)) { $col=sizeof($file); }
echo "Последние ".$col." посещений сайта: "; ?>

Время, дата
Кто посещал
IP, прокси
Посещенный URL

<?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]; // ip бота
$q4[$si]=$string[3]; // адрес посещения
echo ''.$q1[$si].'';
echo ''.$q2[$si].'';
echo ''.$q3[$si].'';
echo ''.$q4[$si].'';
}
echo '';
echo '
Просмотреть последние 100 500';
echo '1000 посещений. ';
echo '
Просмотреть все посещения.';
echo '';
?>
При обращении к файлу просмотра результатов лога, на экране будет отображаться примерно такая табличка:

Последние 5 посещений сайта:
Время, датаКто посещалIP, проксиПосещенный URL
19:08:40 04.11Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)211.11.11.11/log_info.php
19:06:19 04.11Mozilla/4.0 (Windows 98; US) Opera 10.00 [en]123.23.23.23/video_download.php
19:00:06 04.11Mozilla/5.0 (Windows NT 6.1; rv:16.0) Gecko/20100101 Firefox/16.0122.22.22.22current_time.php
18:45:59 03.11Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.8.131 Version/11.11111.11.11.11/script_menu_left.php
18:45:59 03.11Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.8.131 Version/11.11111.11.11.11/script_menu_left_example.php
АМ
Александр М
238
Лучший ответ
Олег Еременко а чем заменить -
if (isset($_GET[col])) {$col=$_GET[col];}else {$col=50;}

а то сейчас в 7РНР ругается что -
Warning: Use of undefined constant col - assumed 'col' (this will throw an Error in a future version of PHP)
а чем заменить -
 if (isset($_GET[col])) $col=$_GET[col] 
а то в 7РНР ругается что -

Warning: Use of undefined constant col - assumed 'col' (this will throw an Error in a future version of PHP)

Похожие вопросы