Вс, 2024-05-05
SITE LOGO
Меню сайта
Категории каталога
Мои статьи [6]
Статьи администратора foo.ucoz.ru
Прохождение игр [24]
Здесь вы найдёте ответ: как пройти игру?
Сеть [1]
Раскрутка и оптимизация [3]
В этой категории вы найдёте массу советов по раскруктке сайта
Описание игр [3]
Описание самых папулярных и долгожданных игр.
Интернет [4]
Об том, что в интернете.
PHP [9]
Всё что касается PHP 3-5
Полиграфия [1]
Начало » Статьи » PHP

Как узнать, откуда пришли посетители (с какого сайта, по какому запросу)

Скрипт на PHP - как узнать, откуда пришли посетители (с какого сайта, по какому запросу) - пример

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

Тогда я обиделся на них за то, что мне, в таком случае, придётся самому писать себе небольшой логгер. Задачка - легчайшая, потому и ломало её делать. Однако хозяева всяких сайтов-счётчиков имеют наглость брать за это деньги, вселяя в людей веру, что свои деньги бурт не зря. Что ж, развеем их надежды нас поиметь! 

Страница, с которой пришли

 

Итак, получить страницу, с которой пользователь попал на эту, - легче лёгкого. Её адрес по умолчанию передаётся в заголовке HTTP-запроса пользователя в строке "Referrer:". Получить её значение из PHP можно, вызвав соответствующую функцию следующим образом: 

getenv("HTTP_REFERER")
 

Так что, в принципе, можно просто взять и написать отдельную функцию, которая: 


$H=getenv("HTTP_REFERER"); // получает URL, с которого пришёл посетитель
$f=fopen("mylog.log",'a'); // открывает файл с логами на добавление
flock ($f,2); // запрещает к нему доступ до тех пор,
//пока он не будет закрыт (на случай, если два
//скрипта захотят одновременно записать что-то
//в файл, одному из них придётся подождать)
fwrite($f,"$H\n"); // пишет в файл полученный тремя строчками выше URL
fclose($f); // закрывает файл
 

 

Потом эту функцию можно вызывать в начале какждого php-скрипта страничек сайта. 

Как узнать ip, свою судьбу и точное время

 

Но! Раз уж мы тут, можно немного доработать функцию, чтобы узнать IP посетителя (по нему можно примерно прикинуть область, где он находится физически), его браузер (интересно же) и страничку, куда он, собственно пришёл (звучит немного странно - мы ж и так знаем, что пришёл он на нашу страничку; но представьте, что у вас эту функция вызывается в участке заголовочного кода, который одинаково вставляется во все ваши странички, - а так, пожалуй, вы и сделаете). Также неплохо бы иметь время, когда чел пришёл к нам на сайт - потом можно будет проанализировать активность пользователей и т.п. 

Так что, функция примет следующий вид: 

 


$er_time=date("H:i:s d M Y"); // записываем текущее время в строку,
//используя заданный формат
$U=getenv("HTTP_USER_AGENT"); // получаем данные о софте,
//который испольует пользователь
$H=getenv("HTTP_REFERER"); // получаем URL, с которого пришёл посетитель
$R=getenv("REMOTE_ADDR"); // получаем IP посетителя
$W=getenv("REQUEST_URI"); // получаем относительный адрес странички,
//которую запросил посетитель
$f=fopen("logs/visits.log",'a'); // дальше - понятно, пишем всё это в файл
flock ($f,2);
fwrite($f,"$er_time\n Br: $U\n Rf: $H\n IP: $R\n Rq: $W\n");
fclose($f);
 

Но и эта функция далека от совершенства! Дело в том, что русских символов вы в этих урлах не увидите - их будут заменять их 16-ричные представления (предваряемые знаком "%"). Поэтому неплохо бы, чтобы скрипт самостоятельно приводил их к удобочитаемому виду: заменял всякие  


http://www.yandex.ru/yandsearch?text=%E9%EE%E6%FB%E3+%F4%F2%F3%EC%E0%ED%E5&stype=www
 

на 


http://www.yandex.ru/yandsearch?text=йожыг+фтумане&stype=www
 

Делать мы это будем следующим куском кода с использованием регулярных выражений: 


while (ereg('%([0-9A-F]{2})',$H)){ // пока в строке $H будет хоть одно
//сочетание знака % и двух символов из диапазонов 0-9 и A-F
//(шестнадцатиричные цифры)
$val=ereg_replace('.*%([0-9A-F]{2}).*','\1',$H);
// присваиваем $val результат замены выражения,
//содержащего процент и два символа из означенных выше интервалов,
//на эти самые два символа
// короче говоря, теперь в $val у нас очередные 2 символа,
//перед которыми в исходном выражении стоял процент
$newval=chr(hexdec($val)); // получаем сивол с номером,
//полученным переведением полученного в $val
//шестнадцатиричного числа в "нормальное"
$H=str_replace('%'.$val,$newval,$H);
//стандартная строковая функция замены -
//заменяет подстроку, состоящую из процента и друх символов
//из переменной $var на символ, который эти два
//шестнадцатиричных символа кодировали
}// конец цикла :)
 

Итого: 

 


$er_time=date("H:i:s d M Y"); // записываем текущее время в строку,
//используя заданный формат
$U=getenv("HTTP_USER_AGENT"); // получаем данные о софте,
//который испольует пользователь
$H=getenv("HTTP_REFERER"); // получаем URL, с которого пришёл посетитель
$R=getenv("REMOTE_ADDR"); // получаем IP посетителя
$W=getenv("REQUEST_URI"); // получаем относительный адрес странички,
//которую запросил посетитель

while (ereg('%([0-9A-F]{2})',$H)){ // пока в строке $H будет хоть одно
//сочетание знака % и двух символов из диапазонов 0-9 и A-F
//(шестнадцатиричные цифры)
$val=ereg_replace('.*%([0-9A-F]{2}).*','\1',$H);
// присваиваем $val результат замены выражения,
//содержащего процент и два символа из означенных выше интервалов,
//на эти самые два символа
// короче говоря, теперь в $val у нас очередные 2 символа,
//перед которыми в исходном выражении стоял процент
$newval=chr(hexdec($val)); // получаем сивол с номером,
//полученным переведением полученного в $val
//шестнадцатиричного числа в "нормальное"
$H=str_replace('%'.$val,$newval,$H);
//стандартная строковая функция замены -
//заменяет подстроку, состоящую из процента и друх символов
//из переменной $var на символ, который эти два
//шестнадцатиричных символа кодировали
}// конец цикла :)

$f=fopen("logs/visits.log",'a'); // дальше - понятно, пишем всё это в файл
flock ($f,2);
fwrite($f,"$er_time\n Br: $U\n Rf: $H\n IP: $R\n Rq: $W\n");
fclose($f);
 

 

Уже по логам этого скрипта можно судить, откуда пришёл посетитель, по каким страничкам он прошёл и на какой страничке покинул сайт. Да, безусловно, можно было это сделать и сессиями - но нам лень. А так - 2 минуты, и можно наслаждаться! :) 

Ты узнаешь её из тысячи

 

Это - основа. Дальше можно много чего придумать: например, из строк, содержащих "http://www.yandex.ru/yandsearch", вырезать ту часть, в которой, собственно, содержится запрос, и записывать в какой-нибудь файл типа "yandex.log". В общем, на что фантазии хватит - всё можно забабахать! 

 

Удачи!


Категория: PHP | Добавил: RedRat (2006-08-23)
Просмотров: 12208 | Комментарии: 25 | Рейтинг: 5.0 |

Всего комментариев: 231 2 3 »
23 advokat-shishuk.ru  
0
GoStats.RU — подcказали что тут можно всю статистику откуда пришли посетители узнать

22 astrooracle.ru  
0
Не осилил.

21 Андрей  
0
Здравствуйте! А можно ли на основе полученных сведений, сделать скрипт партнерской программы для сайта http://bagiraremont.ru

20 masha  
0
Хороший пример работающего скрипта.
А вот пример хорошего справочника для автолюбителей profy-auto.ru

19 DipRizeZegree  
0
[color=color_url - Привет всем уважаемые друзя. Нашел наш отличный сат http://foo.ucoz.ru и понял что здесь мне помогут.
Попрошу всех желающих присоедениться.
Выбрав эту тему этот надеюсь правлильную, если не ту прошу Модераторов перенести ее в раздел в более потходящий.
Я сильно люблю кино. У кого скоросной интернет могут себе позволить http://kinozal.in - скачать фильмы быстро[color=color_url - .
Или просто смотреть онлайн.
Ка на меня я болше люблю с женой смотреть http://kinozal.in/erotika - эротическое кино[color=color_url - . Вообщем кому что лучще. Но проблемма в том что у меня слабый интернет.

Так вот пожалуйста помогите мне найти сайты где возможно смотреть фильмы или скачать даже с плохим интернетом.
Урл пожалуйста шлите в личку, на емаил unsomimmusemm@gmail.com или icq 9448995

18 Vlad  
0
Новый проект онлайн фильмов http://onlinefilmkino.ru/

17 дмитрий  
0
http://moneystep.ru/ информационный портал

16 ыптыт  
0
1. http://cssourcev34.fo.ru/
Лучший сайт для любителей Кс.
Здесь вы можете найти всё интересное и полезное для игры.

2. http://yursite.fo.ru/
Всё необходимое для создания сайта
Создай, продвинь, заработай.

15 Помощь начинающим в познании компьютера  
0
http://shurik911.ru Уроки компьютерной грамотности

14 Помощь начинающим в познании компьютера  
0
http://shurik911.ru

1-10 11-20 21-23
Имя *:
Email *:
Код *:
Форма входа
Поиск по каталогу
Друзья сайта
Статистика
Copyright MyCorp © 2006