Здравстуйте.
подскажите пожалуйста каким образом можно увидеть в логе апача или в любом др. файле переходы по линкам. Т.е. после того когда апач отдаст клиенту страницу, на этой странице есть линки ведущие на страницы других сайтов. можно ли увидеть инфу, отображаещую переход с этого линка на другой сайт? надеюсь внятно изложил суть.
Заранее спасибо.
Если пользователь перешел на ваш или любой другой сайт по ссылке - выставляется переменная HTTP_REFERER. В htaccess'е это переменная %{HTTP_REFERER}, в PHP $_SERVER['HTTP_REFERER'], либо $HTTP_SERVER_VARS['HTTP_REFERER'] (если отключен регистр глобалс), вы так же можете включить или отключить логирование REFERER'а для этого вам необходимо определить формат вашего лога с помощью директивы LogFormat:LogFormat "%h %l %u %t \"%r\" %>s %b" common
а затем определить для вашего VirtualHost'а использование этого формата для вашего лога:
CustomLog logs/access_log common
REFERER показывает откуда пришел пользователь на текущий ресурс (откуда поступил запрос). Если вам нужно именно это, то REFERER это лучшее решение. Если же вам надо узнать когда пользователи уходят с вашей странички, то апач тут непричем, он ведь уже отработал, отдал страничку в браузер клиенту и забыл, отслеживание уходов можно реализовать на JS.
>REFERER показывает откуда пришел пользователь на текущий ресурс (откуда поступил запрос). Если
>вам нужно именно это, то REFERER это лучшее решение. Если же
>вам надо узнать когда пользователи уходят с вашей странички, то апач
>тут непричем, он ведь уже отработал, отдал страничку в браузер клиенту
>и забыл, отслеживание уходов можно реализовать на JS.спасибо большое за ответы. мне нужно именно "когда пользователи уходят с вашей странички" на другие сайты. подскажите плиз как это реализовать на JS.
По onclick на ссылке определять адрес (href) этой ссылки, куда идет переход, и отсылать его ajax запросом на сервер, а там обычный серверный скрипт который будет принимать этот адрес и записывать куда надо, например в файл. В простейшем случае на вскидку чтото типа того:<html>
<script>
function ajaxquery(sURL)
{
var request = null;
if (!request) try { request = new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) {}
if (!request) try { request = new ActiveXObject('Microsoft.XMLHTTP'); } catch (e) {}
if (!request) try { request = new XMLHttpRequest(); } catch (e) {}
if (!request) return '';request.open('GET', sURL, false);
request.send(null);
return request.responseText;
}
</script><a href='other.htm' onclick="javascript: ajaxquery('http://localhost/cgi-bin/translog.pl?href=' + this.href)">other</a>
</html>translog.pl:
#!/usr/bin/perl
use strict;
use CGI qw(:standard escapeHTML);my $href = param('href');
open(FH, ">>log.txt");
print FH $href."\n";
close(FH);(серверный обработчик тут на perl, но это не принципиально, можно написать на любом доступном языке)
собственно говоря раз вы в первую очередь хотели видеть это в логах апача, то можно обойтись вовсе без серверного скрипта. Если вы его не сделаете то запросы из браузера на него ити всеравно будут, и тогда в access логе апача вы сможете наблюдать чтото типа:127.0.0.1 - - [05/Aug/2009:17:55:42 +0400] "GET /cgi-bin/translog.pl?href=http://localhost/other.htm HTTP/1.1" 404 215
где href=http://localhost/other.htm - то что вас интересует. Только вместо того чтобы это выпарсивать из лога проще всетаки ajax обработчик написать, или задействовать модули апача которые проанализируют запрос и если он на translog.pl то параметр href куданить сохранить, что тоже неплохо и без серверного скрипта ;)
>[оверквотинг удален]
>и тогда в access логе апача вы сможете наблюдать чтото типа:
>
>
>127.0.0.1 - - [05/Aug/2009:17:55:42 +0400] "GET /cgi-bin/translog.pl?href=http://localhost/other.htm HTTP/1.1" 404 215
>
>где href=http://localhost/other.htm - то что вас интересует. Только вместо того чтобы это
>выпарсивать из лога проще всетаки ajax обработчик написать, или задействовать модули
>апача которые проанализируют запрос и если он на translog.pl то параметр
>href куданить сохранить, что тоже неплохо и без серверного скрипта ;)
>Круто, спасибо Вам огромное :)