Cтатистика посещений вашего ресурса.

Discussion in 'PHP' started by IIAHbI4, 11 Mar 2007.

  1. IIAHbI4

    IIAHbI4 Banned

    Joined:
    24 Aug 2006
    Messages:
    276
    Likes Received:
    331
    Reputations:
    11
    Доступ к лог-файлам сайта есть не везде, а хочется все-таки просмотреть логи, проблема решаема - пишем скрипт для создания своих лог-файлов.
    Для хранения мы будем использовать обчыный текстовый файл и сессию.

    PHP:
    <?
    session_start();
    if(!
    session_is_registered('counted')){
    $agent $_SERVER['HTTP_USER_AGENT'];
    $uri $_SERVER['REQUEST_URI'];
    $user $_SERVER['PHP_AUTH_USER'];
    $ip $_SERVER['REMOTE_ADDR'];
    $ref $_SERVER['HTTP_REFERER'];
    $dtime date('r');
     
    if(
    $ref == ""){
    $ref "None";
    }
    if(
    $user == ""){
    $user "None";
    }

    $entry_line "$dtime - IP: $ip | Agent: $agent | URL: $uri | Referrer: $ref | Username: $user n";
    $fp fopen("logs.txt""a");
    fputs($fp$entry_line);
    fclose($fp);
    session_register('counted');
    }
    ?>
    Теперь давайте пройдемся по отдельным частям кода:


    Здесь мы запускаем механизм сессий, эта строчка просто необходима, ведь в представленном примере мы будем вести учет пользователей, "не учтенных" сессией.
    PHP:
    session_start();

    Здесь мы проверяем существует ли сессия с именем 'counted', если нет, то выполняем идущий за этой строкой код.
    PHP:
    if(!session_is_registered('counted')){



    А вот уже в этом куске кода мы объявляем список переменных, которые в свою очередь обращаются к глобальным переменным.
    PHP:
    $agent $_SERVER['HTTP_USER_AGENT'];
    $uri $_SERVER['REQUEST_URI'];
    $user $_SERVER['PHP_AUTH_USER'];
    $ip $_SERVER['REMOTE_ADDR'];
    $ref $_SERVER['HTTP_REFERER'];
    $dtime date('r');

    Если человек пришел на ваш сайт, просто набрав в адресной строке браузера ваш адрес и он не зарегистрирован, то в этом случае в логе будет записано "нет".
    PHP:
    $_SERVER['HTTP_USER_AGENT'] - расскажет нам в логе о томкаким браузером и ОС пользуется юзер.
    $_SERVER['REQUEST_URI'] - поведает о томс какой страницы была произведена записьможно также составить статистику наиболее популярных для входа страниц.
    $_SERVER['PHP_AUTH_USER'] - работаеттолькоесли у вас на сайте есть регистрация и пользовательские аккуанты запишется имя пользователя.
    $_SERVER['REMOTE_ADDR'] - ну здесь по-моему все понятно определяется ip пользователя
    $_SERVER
    ['HTTP_REFERER'] - очень удобная вещь с помощью нее мы узнаем откуда пришел пользовательи узнаем о сайтахпоместивших на нас ссылку.
    date('r') - записывается время в стандартно формате.
    f(!$ref){
    $ref "Нет";
    }
    if(!
    $user){
    $user "Нет";
    }

    В последнем куске кода - мы записываем соответствующую информацию в файл logs.txt. Все скрипт статистики готов!
    PHP:
    $entry_line "$dtime - IP: $ip | Agent: $agent | URL: $uri | Referrer: $ref | Username: $user n";
    $fp fopen("logs.txt""a");
    fputs($fp$entry_line);
    fclose($fp);
    session_register('counted');
    Это мой дебют,надеюсь кому небудь понадобится =)
     
    3 people like this.
  2. IIAHbI4

    IIAHbI4 Banned

    Joined:
    24 Aug 2006
    Messages:
    276
    Likes Received:
    331
    Reputations:
    11
    Спустя некоторое время:
    Я вот подумал...можно ещё и без использования сессии записывать информацию в лог файл,но если посещаемость вашего ресурса высокая,то этот варьянт вам не совсем подойдёт,хотя он предоставит вам пооолную картину посещения вашего ресурса.
    PHP:
    <?
    $agent $_SERVER['HTTP_USER_AGENT'];
    $uri $_SERVER['REQUEST_URI'];
    $user $_SERVER['PHP_AUTH_USER'];
    $ip $_SERVER['REMOTE_ADDR'];
    $ref $_SERVER['HTTP_REFERER'];
    $dtime date('r');

    if(
    $ref == ""){
    $ref "None";
    }
    if(
    $user == ""){
    $user "None";
    }

    $entry_line "$dtime - IP: $ip | Agent: $agent | URL: $uri | Referrer: $ref | Username: $user n";
    $fp fopen("logs.txt""a");
    fputs($fp$entry_line);
    fclose($fp);
    ?>
     
  3. mR_LiNK[deface_0nl

    mR_LiNK[deface_0nl Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    147
    Likes Received:
    27
    Reputations:
    13
    Эт все конечно хорошо, появился новый велосепид...не пропадет..+

    имхо лучше обычный счетчик поставить, spylog к примеру, предоставляет детальную инфу, в анализируемом виде..
     
  4. IIAHbI4

    IIAHbI4 Banned

    Joined:
    24 Aug 2006
    Messages:
    276
    Likes Received:
    331
    Reputations:
    11
    не велосипед, spylog не даст тебе такого результата как к примеру второй код.
    (в плане того, сколько раз и когда именно юзер с одим сешэн ИД заходил на твой ресурс)
     
    #4 IIAHbI4, 11 Mar 2007
    Last edited: 11 Mar 2007
  5. mR_LiNK[deface_0nl

    mR_LiNK[deface_0nl Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    147
    Likes Received:
    27
    Reputations:
    13
    согласен, но я смысла не вижу в учете такой мелочи, если ты конечно пряники особо активным серферам раздавать не собираешься

    зы::платный пакет spylog дает более чем достаточно..
     
  6. IIAHbI4

    IIAHbI4 Banned

    Joined:
    24 Aug 2006
    Messages:
    276
    Likes Received:
    331
    Reputations:
    11
    так жизнь то из мелочей состоит =)...ладно чтот флуд.
     
  7. darky

    darky ♠ ♦ ♣ ♥

    Joined:
    18 May 2006
    Messages:
    1,773
    Likes Received:
    825
    Reputations:
    1,418
    Ага.. многократное нажатие ф5 будет добавлять в лог одно и тоже
     
  8. IIAHbI4

    IIAHbI4 Banned

    Joined:
    24 Aug 2006
    Messages:
    276
    Likes Received:
    331
    Reputations:
    11
    это только при использовании 2ого скрипта,вот скажем ты,когда заходиш на ресурс ,то тупо сидиш и на Ф5 жмакаеш? =)
     
  9. Talisman

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

    Joined:
    22 Apr 2006
    Messages:
    400
    Likes Received:
    151
    Reputations:
    80
    а масенький досер заведет кучу сессий ))) и твой лог файл раздует фтп...
     
  10. IIAHbI4

    IIAHbI4 Banned

    Joined:
    24 Aug 2006
    Messages:
    276
    Likes Received:
    331
    Reputations:
    11
    ну ты же не досиш каждый ресурс на который заходиш...ну ей богу...
     
    1 person likes this.
  11. GreenBear

    GreenBear наркоман с медалью

    Joined:
    7 May 2005
    Messages:
    2,547
    Likes Received:
    1,398
    Reputations:
    612
    Причем тут это? Просто надо делать на все случаи жизни, а не надейтся на порядочность людей. Вот и все.