На сервере установлен php хостинг на котором находится блог на wordpress, стала задача определять с какого IP-адреса и браузера заходят люди, потом из спортивного интереса, добавилась функция определения браузера и в конце — концов получился примитивный счётчик.

Есть ли какой-то готовый плагин под это дело или нет, я разбираться не стал — я принялся за создание своего, дело то 15ти минут ненапрягаясь 🙂

Первым, что я сделал — создал дополнительную таблицу для сбора в неё отчётов.

Таблица count, которая содержит такие поля:

cout

Далее, использовал такой код:

$page = $_SERVER['HTTP_HOST'].$_SERVER["PHP_SELF"];
$ip = $_SERVER['REMOTE_ADDR'];
$proxy_ip = $_SERVER['HTTP_X_FORWARDED_FOR'] == "" ? $_SERVER['REMOTE_ADDR'] : $_SERVER['HTTP_X_FORWARDED_FOR'];
$browser = $_SERVER['HTTP_USER_AGENT'];
if ($ip == $proxy_ip)
{
$ip=$ip;
}
else
{
$ip="$ip, $proxy_ip";
}

здесь используются только стандартные функции php и ничего лишнего, остаётся теперь писать в базу переменные $page, $ip, $proxy_ip, $browser в соответствующие таблицы и выводить их при необходимости.

Первым делом нам нужно делать выборку из базы, что бы смотреть есть ли уже в базе запись о какой-то странице, например http://…/index.php.

$select_count = mysql_query ("SELECT pages, number FROM count WHERE page = '$page'");
$number = mysql_fetch_array($select_count, MYSQL_ASSOC);
if (($number != 0) || ($number != ''))
{
$number=$number+1;
}
Попутно, в случае успеха мы выбрали значение количества запросов той или инной страницы и добавили +1.

В случае отсутсвия, вносим все данные в таблицу:

$insert_count = mysql_query ("INSERT INTO count (page, number, last_access, owner_ip, browser) VALUES ('$page', '1', NOW(), '$ip', '$browser')");

А если уже имеется запись, то обновлять данные с новым значением переменной $number, дату доступа, ip адрес и браузер.

$update_count = mysql_query ("UPDATE count SET number = '$number', last_access = 'NOW()', owner_ip = '$ip', browser = '$browser' WHERE page = '$page'");

С запросами определились, осталось теперь сделать условие по которому будет отрабатывать тот или онной запрос к базе.

Тут в принципе воля скриптосоздателя, как он хочет такие и делает условия, вплоть до простого постоянного внесения данных в базу, а в нужном месте производит выборку и вывод данных на любое место.

Тут плясать можно от уже имеющейся переменной $number. Если она пуста, или имеет значение 0, то выполняем внесение данных, в противном случае — обновление уже имеющихся данных:

if ( $number == '' or $number != 0 )
{
здесь выполняем внесение данных 
} 
else
{
а здесь их обновление
}

Подытожим.
В моём примере подрозумевается, написание скрипта с динамическим обновлением последнего доступа к той или инной странице. То есть, если уже на этой странице было 5ть человек, то в базу не заносится данные о 6том, а обновляется на данные 6го пользователя. Также, можно либо добавить ещё одно поле, либо просто вносить в уже имеещееся поле всех посетителей без исключения. Также, можно сортировать по IP адресу и так далее. Всё это можно описывать в условии которые скриптосоздатель придумает для себя.

Напоминаю всем копирующим мой контент о существовании закона "Об авторском праве".
В связи с этим, прошу во избежании конфликтов при копировании данного материала, ставить на него ссылку:

http://noted.org.ua/?p=1147


Также, вы можете отблагодарить меня переслав любую сумму на любой кошелек WebMoney, для поддержания данного ресурса. Или просто админу на пиво ;)

Кошельки для получения благодарности:
R386985788805
U234140473141
Z147712360455

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

Add your comment now

You must be logged in to post a comment.