После авторизации Вы получите доступ к файлам, скрытым материалам сайта, исходным кодам
возможность комментировать и т.д.

Вы можете авторизоваться на сайте всего одним кликом:

2016-07-12
Основы PHP → Лог-Файлы
PHP, Счетчик на сайт, Посещаемость сайта, Статистика, Логи

В этом уроке мы создадим счетчик для сайта. В котором, каждое посещение сайта будет записываться в файл, и мы получим возможность видеть статистику.

Журнал посещений сайта

Пришло время попрактиковаться в работе с файлами. Первый учебный пример — журнал посещений сайта.

Когда посетитель попадает на главную страницу, будем фиксировать время захода, IP-адрес и страницу, откуда он к нам пришел. Просматривать эту информацию мы будем с помощью страницы журнала посещений.

Пример реализации журнала посещений:

Помимо этого добавим две статичные странички, которые просто ссылаются на главную страницу нашего сайта. Они нужны для того, чтобы продемонстрировать возможность определять, откуда пользователь попал на сайт.

Информацию о посещениях мы будем записывать в файл visits.txt:

2010-03-13 00:07:44
127.0.0.1
http://localhost/test/site1.htm
2010-03-13 00:07:48
127.0.0.1
http://localhost/test/site2.htm
2010-03-13 00:07:55
127.0.0.1
http://localhost/test/visits.htm
2010-03-13 00:07:58
127.0.0.1
http://localhost/test/site1.htm
2010-03-13 00:08:00
127.0.0.1
2010-03-13 00:08:03
127.0.0.1
http://localhost/test/site1.htm

Файл состоит из полей:

  1. Дата и время;
  2. IP-адрес;
  3. Откуда пришел.

Поле "откуда пришел" может быть пустым, если это прямой заход на сайт (когда адрес набирается вручную).

К этому уроку прилагается архив с уже готовыми файлами, Вы можете скачать его внизу этой страницы

Теперь рассмотрим исходные тексты сценариев. Файл index.php приведен ниже:

index.php:
<?php
// Запись в файл информации о посещении страницы.
   $f = fopen('visits.txt', 'a+');
   fwrite($f, date('Y-m-d H:i:s') . "\n");
   fwrite($f, $_SERVER['REMOTE_ADDR'] . "\n");
   fwrite($f, $_SERVER['HTTP_REFERER'] . "\n");
   fclose($f);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
   <meta http-equiv="content-type"
      content="text/html; charset=windows-1251">
   <title>Наш сайт</title>
</head>
<body>
   <h1>Это главная страница сайта</h1>
   Мы <a href="visits.php">следим</a> за ее посещаемостью!
   <br/><br/>
   На нас ссылаются два сайта: <a href="site1.htm">раз</a>, <a href="site2.htm">два</a>.
</body>
</html>

Мы открываем файл режимом a+ , что означает следующее:

  1. Файл будет открыт для работы в текстовом режиме;
  2. Данные будут записываться в конец файла;
  3. Если файл не существует, он будет создан.
Весь список режимов в предыдущем уроке.

При открытии файла мы получаем его целочисленный дескриптор, который будем использовать при дальнейшей работе. Далее мы записываем в файл три строки. Обратите внимание, что для перехода на новую строку используется последовательность "\n". Ее следует писать в двойных кавычках, тогда она заменится на спецсимвол переноса строки. Если же '\n' написать в апострофах, то это будет просто символ "\", за которым следует символ "n".

Наконец, когда работа с файлом завершена, его следует закрыть. Для этого служит функция fclose().

Теперь рассмотрим код журнала посещений:

visits.php:
<?php
// Чтение из файла всей информации о посещениях.
$lines = file('visits.txt');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
   <head>
      <meta http-equiv="content-type"
      content="text/html; charset=windows-1251">
   <title>Наш сайт</title>
</head>
<body>
   <h1>Журнал посещений</h1>
   <a href="index.php">На главную</a>
   <br/>
   <br/>
   <table border="1">
   <tr>
      <td>Время</td>
      <td>IP-адрес</td>
      <td>Откуда</td>
   </tr>
   <?php
   $n = count($lines);
   for ($i = 0; $i < $n; $i += 3)
      {
         echo '<tr>';
         echo '<td>' . $lines[$i + 0] . '</td>';
         echo '<td>' . $lines[$i + 1] . '</td>';
         echo '<td>' . $lines[$i + 2] . '</td>';
         echo '</tr>';
      }
   ?>
</table>
</body>
</html>

Мы легко читаем все строки файла в массив с помощью функции file(). При использовании этой функции не нужно открывать и закрывать файл — она все делает сама.

Ниже приведен исходный код статичных страничек site1.html и site2.html ничем не примечателен. Они просто содержат ссылку на главную страницу сайта.

site1.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
   <meta http-equiv="content-type"
      content="text/html; charset=windows-1251">
   <title>Сайт #1</title>
</head>
<body>
   <h1>Это чей-то сайт #1</h1>
   Он <a href="index.php">ссылается</a> на наш сайт.
</body>
</html>


site2.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
   <meta http-equiv="content-type"
      content="text/html; charset=windows-1251">
   <title>Сайт #2</title>
</head>
<body>
   <h1>Это чей-то сайт #2</h1>
   Он <a href="index.php">ссылается</a> на наш сайт.
</body>
</html>

Вы можете скачать эти файлы из архива к уроку (внизу этой страницы).

Загрузить файлы на Ваш сервер и перейдите несколько раз с дополнительных страниц по ссылке на главную, затем откройте журнал посещений и посмотрите, что получилось!

494
0
Пожалуйста, авторизируйтесь, чтобы скачать архив с файлами урока