За последние 24 часа нас посетил 63201 программист и 1743 робота. Сейчас ищет 891 программист ...

Статистика

Тема в разделе "PHP для новичков", создана пользователем Andrey5555, 29 янв 2008.

  1. Andrey5555

    Andrey5555 Активный пользователь

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    Как сделать так что бы подсчитывало количество посещений сегодня? Что такое хиты и хосты?
     
  2. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Всего просморров
    Уникальных пользователей! (по IP)
    Пишешь файл с ипами... выводишь масивом :)
     
  3. Andrey5555

    Andrey5555 Активный пользователь

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    А как сделать что бы подсчитывало только за сегодня?
     
  4. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    созданием файлика с именем аля дата ;)))
     
  5. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    а ещё в бд писать можно :oops:
    а то мало ли несколько человек одновременно войдёт, а мы flock сделать поленились :)
     
  6. Andrey5555

    Andrey5555 Активный пользователь

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    Я хочу что бы подсчитывало за сегодня. Всмысле, данные за вчера затирались новыми.
    Что бы в хостах (к примеру, 15 значений за 29.01. Сегодня 30.01 и надо что бы данных за вчера не было, а считались уже только за сегодня).
     
  7. Andrey5555

    Andrey5555 Активный пользователь

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    Я только бд и использую, файлы это не мое. :wink:
     
  8. Andrey5555

    Andrey5555 Активный пользователь

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    Подскажите что еще реализовать можно в статистике, что бы она подробное представление о сайте?
     
  9. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    а это зависит от того что УЖЕ реализовано :)
     
  10. Andrey5555

    Andrey5555 Активный пользователь

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    Хиты должны +1 каждый раз при обновлении страницы или как то по другому??? Заранее спасибо
     
  11. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    И все такие: "Дима рулит аж с 98-ого! Дима рулит аж с 98-ого! Дима, покажи сиськи!!!111 Дима, покажи сиськи!!!111". Спеста - замечательная готовая статистика.
     
  12. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Andrey5555
    Да хиты обновлять каждый раз при загрузке страницы.
    А хосты только для уникальных IP.

    lexa
    а) Вы отвечаете за возможные ошибки в данном коде?
    б) Зачем мне система в несколько десятков (сот) килобайт, если мне нужно подсчитать только хиты/хосты?

    Не ленитесь - пишите свое :)
     
  13. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    а) А вы отвечаете за ошибки своей ОС и драйверов видео-карты?
    б) Да затем, что потом вам понадобится ещё куча фич, которые уже есть в Спесте.
     
  14. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Как посчитать хиты простым способом:
    Создай файл php:
    PHP:
    1.  
    2. <?php
    3. if(!file_exists(date('dmY').'.txt'))
    4. {fopen(date('dmY').'.txt','w');}
    5. file_put_contents(date('dmY').'.txt',(file_get_contents(date('dmY').'.txt')+1));
    6. ?>
    7.  
    и инклюдь его в каждую страницу.
    Этот скрипт будет записывать количество просмотров в файл с именем дата.txt
    Думаю, как получить это число из файла а так же автоматически удалять вчерашние файлы ты сообразишь :)
     
  15. ValaR

    ValaR Активный пользователь

    С нами с:
    3 май 2007
    Сообщения:
    196
    Симпатии:
    0
    Адрес:
    Челябинск
    можно сделать взять статистику с http://liveinternet.ru или http://spylog.ru
    А через бд можно так:
    Таблица:
    [sql]create table visiting_table (id BIGINT AUTO_INCREMENT NOT NULL PRIMARY KEY,
    ip TINYTEXT NOT NULL,
    ip_visit int(10),
    time INT NOT NULL)[/sql]
    PHP:
    1. //функция на получения ip-адреса
    2. //---------------------------------------------------------------------------------------------------------------------------
    3. function getIP()
    4. {
    5.  if(getenv("HTTP_CLIENT_IP"))
    6.  {
    7.   $ip = getenv("HTTP_CLIENT_IP");
    8.  }
    9.  elseif(getenv("HTTP_X_FORWARDED_FOR"))
    10.  {
    11.   $ip = getenv("HTTP_X_FORWARDED_FOR");
    12.  }
    13.  else
    14.  {
    15.   $ip = getenv("REMOTE_ADDR");
    16.  }
    17.  return $ip;
    18. }
    19. //конец функции на получения ip-адреса
    20. //---------------------------------------------------------------------------------------------------------------------------
    21.  
    22. //Занесение посещения
    23. //-------------------------------------------------------------------------------------------------
    24. $time = date(dmy);
    25. $ip = getIP();
    26. $query_proverka = "Select id  from visiting_table where time = '$time' and ip = '$ip' limit 1";
    27. $result_visiting = mysql_query($query_proverka, $link) or die('не могу проверить посещения');
    28. if($mas = mysql_fetch_row($result_visiting))
    29. {
    30.  $id = $mas[0];
    31.  $query_update = "update visiting_table set ip_visit = ip_visit + 1 where id = $id";
    32.  mysql_query($query_update, $link) or die('не могу увеличить старое посещения');
    33. }
    34. else
    35. {
    36.  $query_insert = "INSERT delayed INTO visiting_table (ip, ip_visit, time) VALUES ('$ip','1' ,'$time')";
    37.  mysql_query($query_insert, $link) or die('не могу добавить новое посещения');
    38. }
    39. //-------------------------------------------------------------------------------------------------
    40. //Окончание занесения посещения
    41.  
    42. //И вывод
    43. $sql_query = 'Select ip, ip_visit, time from visiting_table';
    44. $result = mysql_query($sql_query, $link) or die('Не могу выполнить запрос!');
    45. while($mas = mysql_fetch_row($result))
    46. {
    47.  echo "Дата: " . $mas[2] . " - " . $mas[0] . " посещений: " . $mas[1] . "<br>";
    48. }
    49.  
    Скрипт очень простенький. Он не выводит не общее количество хитов и хостов, а сколько у каждого посетителя было просмотров. + плюс не стирает вчерашние посещения. Но все это добавить, думаю, не составит труда.
     
  16. Amiak

    Amiak Активный пользователь

    С нами с:
    29 май 2007
    Сообщения:
    68
    Симпатии:
    0
    Адрес:
    Подмосковье
    А вот моя реализация того что Andrey5555 хочет, к шастю у меня есть такая реализация, правда я ее немного упростил под его необходимости, т.к. у меня в статистику еше много интерестного пишеться!
    Пояснять код я думаю не стоит..! ноесли будут вопросы, спрашивайте расскажу..! ))

    PHP:
    1. <?php
    2. $date = date("d.m.Y");
    3. $stat_time = date("H:i");
    4. $curent_day = date("d");
    5. $current_stat_file = 'statfile.txt';
    6. $date_of_access = date ("d", filemtime("$current_stat_file"));
    7.  
    8. $temp_file = file("$current_stat_file");
    9. $last_line_onstat = $temp_file[count($temp_file)-1];
    10. $exploded_stat_line = explode("~", $last_line_onstat);
    11.  
    12. if(file_exists($current_stat_file))
    13. {
    14.     if($date_of_access == $curent_day)
    15.     {
    16.         if($exploded_stat_line[3] != $страница к которой обратились)
    17.             {
    18.                 write_stat($date, $stat_time, $ip, $(страница к которой обратились));
    19.                 clearstatcache();
    20.             }
    21.         else{}
    22.     }
    23.     else
    24.     {
    25.         write_stat($date, $stat_time, $ip, $(страница к которой обратились));
    26.         clearstatcache();
    27.     }
    28. }
    29. else
    30. {
    31.     $handle = fopen($current_stat_file, 'w');
    32.     fclose($handle);
    33.     write_stat($date, $stat_time, $ip, $(страница к которой обратились));
    34. }
    35.  
    36. function write_stat ($date, $time, $ip, $(страница к которой обратились)){
    37.     if(empty($date)){$date = "";}
    38.     if(empty($time)){$time = "";}
    39.     if(empty($ip)){$ip = "";}
    40.     if(empty($(страница к которой обратились))){$(страница к которой обратились) = "";}
    41.    
    42.     $current_stat = 'statfile.txt';
    43.     $stat_data = "$date~$time~$ip~$(страница к которой обратились)\n";
    44.  
    45.     if (is_writable($current_stat)) {
    46.         if (!$handle = fopen($current_stat, 'ab')) {/*echo "Cannot open file ($current_stat)";*/exit;}
    47.         if (fwrite($handle, $stat_data) === FALSE) {/*echo "Cannot write to file ($current_stat)";*/exit;}
    48.         fclose($handle);
    49.     }
    50.     else{}
    51. }
    52. ?>
     
  17. Anonymous

    Anonymous Guest

    Бляяяяяяя.........
     
  18. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Думаю пояснять все же стоит =)))
    А это ващще жесть:
    !!!!!!!!!
     
  19. Amiak

    Amiak Активный пользователь

    С нами с:
    29 май 2007
    Сообщения:
    68
    Симпатии:
    0
    Адрес:
    Подмосковье
    Всего лишь навсего подстраховка от непонятных или пустых переменных...
    в целях хтрости не пишу имя своей переменной.. в которой у меня храняться имены страни.. и она собственно нужна для того что я в скрипте не пишу в статистику обновления страниц.. а только если они рефиреться...
     
  20. Amiak

    Amiak Активный пользователь

    С нами с:
    29 май 2007
    Сообщения:
    68
    Симпатии:
    0
    Адрес:
    Подмосковье
    и че придераться в словам! главное что скрипт отлично работает и отвечает требованиям Andrey5555
     
  21. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    В целях хитрости - напиши другое имя переменной! Зачем бред городить?!
     
  22. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    По теме: в свое время тоже написал нечто подобное, правда чуть мудренее, а потом узнал какие удобные есть бесплатные системы статистики... например "google analitics" - и успешно забыл про свои извращения!
    Наверное каждый должен через это пройти... )))
     
  23. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    Amiak
    скрипт - гавно. не имхо. уж извините, что так прямо. файл принято лочить.
    эт во первых, во вторых в функциях своя область видимости переменных, и нафига было там впендюрить свои выкрутасы с названием пременной не понятно.
     
  24. Amiak

    Amiak Активный пользователь

    С нами с:
    29 май 2007
    Сообщения:
    68
    Симпатии:
    0
    Адрес:
    Подмосковье
    ну быть может вы и правы, но на момент написания мне это показалось простым и удобным в исполнении...
    я не против готовых систем сбора статистики, просто охото свою слобзать, дабы горького опыту набраться!
     
  25. Amiak

    Amiak Активный пользователь

    С нами с:
    29 май 2007
    Сообщения:
    68
    Симпатии:
    0
    Адрес:
    Подмосковье
    кста что значит "лочить"
    незнаю такого выражения!