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

Список разделов Общие разделы Оффтопик

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

Сообщение #1 hebroid » 15.11.2014, 20:31

Существует ли способ узнать, откуда впервые пришел на форум новый зарегистрированный пользователь?
hebroid M
Автор темы
Аватара
Откуда: Россия
Репутация: 19
С нами: 9 лет 9 месяцев

Сообщение #2 ЖЪРЧИК » 15.11.2014, 21:14

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

Итак, получить страницу, с которой пользователь попал на эту, - легче лёгкого. Её адрес по умолчанию передаётся в заголовке 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
Спойлер
http://plutonit.ru/view_post.php?id=143
Откуда к нам пришли на сайт на PHP.

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

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

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

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

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

Код: Выделить всё
$a = $_SERVER['HTTP_REFERER']; - создаем перемнную $a и заносим туда информацию.

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

<?

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

{

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

}

else

{

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

}

?>

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

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

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

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

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

Далее остается только поместить данный код, в какой-либо блок на сайте.
ЖЪРЧИК
Аватара
Репутация: 174
С нами: 9 лет 7 месяцев

Сообщение #3 rbooze » 16.11.2014, 18:14

hebroid, через сторонний счётчик посещений можно. Какое-то время пользовался clicky, туда можно закинуть ip юзера и посмотреть откуда приплыл. Но лучше просто спросить :cyclop: Как правило люди охотно делятся инфой, как нашли форум. И отписываются в соответствующем топике.
rbooze
Аватара
Репутация: 95
С нами: 10 лет 7 месяцев

Сообщение #4 pisikot » 16.11.2014, 21:28

metrika.yandex.ru
pisikot M
Аватара
Откуда: Тюмень, Россия
Репутация: 43
С нами: 11 лет 6 месяцев


Вернуться в Оффтопик



cron