На сервере установлен 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/1147


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

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

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

Add your comment now

Please note: JavaScript is required to post comments.