Откуда приходят новые пользователи?

Board index Общие разделы Оффтопик

Description: Здесь можно обсудить всё, что не связано с тематикой сайта.
Moderator: Поддержка

Post #1by hebroid » 15.11.2014, 20:31

Существует ли способ узнать, откуда впервые пришел на форум новый зарегистрированный пользователь?
Форум IndieGaming.ru - бесплатные раздачи Steam игр, обсуждения новинок игровой индустрии, инди-бандлы и актуальные новости.
hebroid M
Topic author, Мастер
Avatar
Age: 27
Location: Россия
Reputation: 19
With us: 2 yaers 9 months

Post #2by ЖЪРЧИК » 15.11.2014, 21:14

Да, можно скрипт наверно поставить с логом. Видимо он перехватывает сопроводительную ссылку в POST или где то там. :think:
Я встречал такое на сайтах.
Spoiler
Страница, с которой пришли

Итак, получить страницу, с которой пользователь попал на эту, - легче лёгкого. Её адрес по умолчанию передаётся в заголовке 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". В общем, на что фантазии хватит - всё можно забабахать!
http://www.internet-technologies.ru/articles/article_247.html
Spoiler
http://plutonit.ru/view_post.php?id=143
Откуда к нам пришли на сайт на PHP.

Для этого будем использовать суперглобальный массив сервер $_SERVER и элемент HTTP REFERER.

$_SERVER - предопределённый массив который PHP-интерпретатор помещает переменные, полученные от сервера.

HTTP REFERER - при помощи него извлекается информация о источнике запроса.

$_SERVER['HTTP_REFERER'] - информация откуда к нам пришли на сайт.

Для этого необходимо создать небольшой PHP код,

Code: Select all
$a = $_SERVER['HTTP_REFERER']; - создаем перемнную $a и заносим туда информацию.

Используем конструкцию if-else

<?

if (условие) - если условие верно, то двигаемся дальше

{

выполняем действие

}

else

{

если ложь, то выполняем действие

}

?>

Теперь давайте выведем наш код.
Code: Select all
<?php
$a = $_SERVER['HTTP_REFERER'];
if (isset ($a))
{
echo "Вы пришли со страницы:" .$a;
}

else
{
echo "Вы попали на сайт напрямую";
}
?>

Далее можно немного усовершенствовать наш код и сделать из переменной $a ссылку

Code: Select all
<?php
$a = $_SERVER['HTTP_REFERER'];
$b = "<a href = $a>$a</a>";
if (isset ($a))
{
echo "Вы пришли со страницы:" .$b;
}

else
{
echo "Вы попали на сайт напрямую";
}
?>

Далее остается только поместить данный код, в какой-либо блок на сайте.
плешивый кот
ЖЪРЧИК
Гуру
Avatar
Reputation: 175
With us: 2 yaers 7 months

Post #3by rbooze » 16.11.2014, 18:14

hebroid, через сторонний счётчик посещений можно. Какое-то время пользовался clicky, туда можно закинуть ip юзера и посмотреть откуда приплыл. Но лучше просто спросить :cyclop: Как правило люди охотно делятся инфой, как нашли форум. И отписываются в соответствующем топике.
rbooze
Гуру
Avatar
Reputation: 96
With us: 3 yaers 7 months

Post #4by pisikot » 16.11.2014, 21:28

metrika.yandex.ru
Коллекционирую бирдекели, меняться будем?)
pisikot M
Мастер
Avatar
Age: 28
Location: Тюмень, Россия
Reputation: 43
With us: 4 yaers 6 months


Forum name: Оффтопик
Description: Здесь можно обсудить всё, что не связано с тематикой сайта.

Quick reply


Enter the code exactly as it appears. All letters are case insensitive.
Confirmation code
:hi: :smile: :wink: :twisted: :sad: :evil: :smoke: :eh: :eek: :fie: :silenced: :razz: :oops: :help: :spy: :insane: :biggrin: :toothless: :ill: :nervious: :weirdface: :pray: :clap: :think: :boxing: :cyclop: :rambo: :zombie: :cry: View more smilies

   

Return to Оффтопик