скрипт логирования юзер агентов

Discussion in 'PHP' started by fire64, 28 Apr 2008.

  1. fire64

    fire64 Elder - Старейшина

    Joined:
    1 Apr 2008
    Messages:
    251
    Likes Received:
    22
    Reputations:
    5
    подскажите php скрипт для логирования юзерагентов и реферов
    и что бы все эти данные выводились в нормальном юзабельном виде
     
  2. brasco2k

    brasco2k Elder - Старейшина

    Joined:
    23 Nov 2007
    Messages:
    258
    Likes Received:
    91
    Reputations:
    0
    попробуй ето:

    PHP:
    <?php
    $f
    =fopen("users.log","at"));
    flock($f,2);
    fputs($f,"Юзер-агент: ".$_SERVER['HTTP_USER_AGENT']."\n");
    fputs($f,"IP: ".$_SERVER['REMOTE_ADDR']."\n");
    fputs($f,"Реферер: ".$_SERVER['HTTP_REFERER']."\n");
    flock($f,3);
    fclose($f);
    ?>
    ставишь chmod(права) на созданный предварительно users.log - 777

    этот код^^^
    вставляешь в странички, потом статистику смотришь в users.log

    думаю ты это хотел, можно кстати сделать и sql если ты хочешь чтобы все красиво было..... но это быстро базу положит)), если юзеры будут перезагружать по 5 раз странички каждый в несколько секунд
     
    #2 brasco2k, 28 Apr 2008
    Last edited: 28 Apr 2008
    1 person likes this.
  3. fire64

    fire64 Elder - Старейшина

    Joined:
    1 Apr 2008
    Messages:
    251
    Likes Received:
    22
    Reputations:
    5
    у меня на сайте постоянно по 20, 30 юзеров, которые непереставая шастают по сайту
    так что лог файл все же лучше чем база

    не работает, лог остается пустым
     
    #3 fire64, 28 Apr 2008
    Last edited: 28 Apr 2008
  4. Fuckel

    Fuckel Banned

    Joined:
    16 Jan 2008
    Messages:
    274
    Likes Received:
    59
    Reputations:
    6
    скрипт записи
    PHP:
    <?
    // функция по определению ip
    function ip(){
    if( 
    getenv('REMOTE_ADDR')) 
    {
    $user_ip getenv('REMOTE_ADDR');}
    elseif( 
    getenv('HTTP_FORWARDED_FOR')) 
    {
    $user_ip getenv('HTTP_FORWARDED_FOR');} 
    elseif( 
    getenv('HTTP_X_FORWARDED_FOR')) 
    {
    $user_ip getenv('HTTP_X_FORWARDED_FOR');} 
    elseif( 
    getenv('HTTP_X_COMING_FROM')) 
    {
    $user_ip getenv('HTTP_X_COMING_FROM');} 
    elseif( 
    getenv('HTTP_VIA')) 
    {
    $user_ip getenv('HTTP_VIA');} 
    elseif( 
    getenv('HTTP_XROXY_CONNECTION'))
    {
    $user_ip getenv('HTTP_XROXY_CONNECTION');} 
    elseif( 
    getenv('HTTP_CLIENT_IP')) 
    {
    $user_ip getenv('HTTP_CLIENT_IP');} 
    else{
    $user_ip='unknown';}
    if(
    15 strlen($user_ip)){
    $ar split(', '$user_ip);
    for(
    $i=sizeof($ar)-1$i 0$i--){
    if(
    $ar[$i]!='' and !preg_match('/[a-zA-Zа-яА-Я]/'$ar[$i]))
    {
    $user_ip $ar[$i]; 
    break; 
    }
    if(
    $i==sizeof($ar)-1){$user_ip 'unknown';}
    }
    }
    if(
    preg_match('/[a-zA-Zа-яА-Я]/'$user_ip)){$user_ip 'unknown';}
    return 
    $user_ip;
    }
    $ip_user ip();
    $time=date("d-M-Y");
    $op=fopen("log-$time.txt""a");
    fputs($op"ip: ".$ip_user." Броузер: ".$_SERVER['HTTP_USER_AGENT']." Реф: ".$_SERVER['HTTP_REFERER']."\n");
    fclose($op);
    ?>
    скрипт вывода
    PHP:
    <?
    $d dir("./");
    $i=0;
    while(
    $entry=$d->read()) {
        if (
    substr($entry,0,4)=="log-") {
            
    $names[$i]=substr($entry,4,-4);
            
    $i++;
            }
        }
    $d->close();
    for (
    $i=0$i<count($names); $i++) print"<a href=\"log-$names[$i].txt\">$names[$i]</a><br />";
    ?>
    системные переменные и все. мог постараться и сам написать. ;)
     
  5. fire64

    fire64 Elder - Старейшина

    Joined:
    1 Apr 2008
    Messages:
    251
    Likes Received:
    22
    Reputations:
    5
    спасибо теперь все логируется нормально

    отностительно содержимого лога, все вроде понятно кроме строк
    .net Clr 1.1.4322; .net Clr 2.0.50727
     
  6. biophreak

    biophreak Elder - Старейшина

    Joined:
    3 Aug 2007
    Messages:
    348
    Likes Received:
    63
    Reputations:
    15
    Это, видимо версия .net фреймворков :) ВРоде осел страдает подстановкой этой шняги...короче не переживай...это - часть юзерагента... ;)
     
  7. fire64

    fire64 Elder - Старейшина

    Joined:
    1 Apr 2008
    Messages:
    251
    Likes Received:
    22
    Reputations:
    5
    там в юзер агентах вобще много интересного
    у полвины юзеров в браузерах стоит всякая хрень типа iebar; acc=kimochiz; acc=none; FunWebProducts и прочего
     
  8. fire64

    fire64 Elder - Старейшина

    Joined:
    1 Apr 2008
    Messages:
    251
    Likes Received:
    22
    Reputations:
    5
    какую переменную использовать для определения домена пользователя ?
     
  9. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,515
    Likes Received:
    400
    Reputations:
    196
    gethostbyaddr()