1. Гость, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

1.4.4 mmtop статистика - листинг файла

Тема в разделе 'PW Вопросник', создана пользователем wsok, 24 мар 2015.

  1. TopicStarter Overlay

    wsok Программист Пользователи

    Сообщения:
    606
    Лайки:
    173
    Пол:
    Мужской
    Репутация:
    3
    В общем реализовав многие функции ЛК, теперь приблизился к возможности учета голосов на ммтопе, но для этого нужна следующая информация:

    1. листинг файла статистики (его пример или ссылка на него)
    2. что означает каждое из значений в его записи.
    3. порядок обработки информации (интервал обновления этого файла статистики на ммтопе и прочая информация связанная с генерацией статистики).

    Увы я не клиент ммтопа и не имею "боевых" игровых серверов, поэтому регистрация там исключена, да и сама модерация на ммтопе просто может не пропустить если добавлю тестовый проект. Потому мне просто нужна информация по статистике, что я указал выше, остальное (методы, парсинг и т.д. по обработке файла статистики) уже реализовать сам попробую.

    Заранее спасибо за информацию.
  2. SomePerson Программист Old school Пользователи

    Сообщения:
    227
    Лайки:
    123
    Пол:
    Мужской
    Репутация:
    3
    1 - ID голоса, 2 - Дата Время, 3 - Текст при голосовании, 4 - Тип голоса (1 обычный, 2 смс)
    Интервал обновления 2 часа (я себе сделал каждые 6 часов обновление)
    P.S. Я приложил файл с некоторой статистикой, убрал логины, оставил только с хешами

    Вложения:

    • mmotop.zip
      Размер файла:
      1,7 КБ
      Просмотров:
      11
    wsok нравится это.
  3. TopicStarter Overlay

    wsok Программист Пользователи

    Сообщения:
    606
    Лайки:
    173
    Пол:
    Мужской
    Репутация:
    3
    спасибо, но вы указали 4 значения из листинга, но я как понимаю их там 5?
    [​IMG]
    ид голоса - время голоса - ип адрес (если не ошибаюсь?) - какой то хеш? - тип голоса

    честно не совсем понял 3 и 4 запись. 3 вроде айпи? 4 хеш чтоли?
  4. salitypw Программист Пользователи

    Сообщения:
    673
    Лайки:
    458
    Пол:
    Мужской
    Репутация:
    8
    Команда:
    Easy Game Protection
    Страна:
    Japan Japan
    4 - То, что вводит игрок в поле "Логин" при голосовании
  5. Anderland Guest

    Репутация:
    0
    1 - ID
    2 - Дата + Время
    3 - IP Адрес голосовавшего
    4 - То, что указывается при голосовании. Обычно логин\никнейм, тут он заменил на хэш.
    5 - Тип голоса (1 обычный, 2 смс)
  6. TopicStarter Overlay

    wsok Программист Пользователи

    Сообщения:
    606
    Лайки:
    173
    Пол:
    Мужской
    Репутация:
    3
    хм, т.е. логин всегда кодируется в хеш на ммтопе? или вообще он открыто записывается?
  7. salitypw Программист Пользователи

    Сообщения:
    673
    Лайки:
    458
    Пол:
    Мужской
    Репутация:
    8
    Команда:
    Easy Game Protection
    Страна:
    Japan Japan
    Логин не хешируется. Это игроки вводят хеш вместо логина.
  8. TopicStarter Overlay

    wsok Программист Пользователи

    Сообщения:
    606
    Лайки:
    173
    Пол:
    Мужской
    Репутация:
    3
    чтож, всем спасибо, вроде все довольно просто, попробую дальше сам разобраться. Просто несколько смутил тот факт, что логин в виде хеша. Всегда думал, что в статистике он открыто пишется. Хеш надеюсь md5?
  9. HolaRiva Пользователи

    Сообщения:
    232
    Лайки:
    62
    Пол:
    Женский
    Репутация:
    0
    Страна:
    Russian Federation Russian Federation
    Открытый он, 1 в 1 текст который введешь в поле "ник" при голосовании. Просто текущие администраторы мудрят что-бы ммотоп не сливал их базу логинов и заставляют вводить в поле не ник, а хеш ника.
  10. TopicStarter Overlay

    wsok Программист Пользователи

    Сообщения:
    606
    Лайки:
    173
    Пол:
    Мужской
    Репутация:
    3
    ах вот оно что, ну я и сам параноик в этом плане )) Спасибо
  11. SomePerson Программист Old school Пользователи

    Сообщения:
    227
    Лайки:
    123
    Пол:
    Мужской
    Репутация:
    3
    Черт, IP пропустил, хотел написать про хеши, думал поймешь...
    Кстати, там табуляция стоит, поэтому я убрал квоту и сделал файл... (ксен табуляцию не пропускает)
  12. TopicStarter Overlay

    wsok Программист Пользователи

    Сообщения:
    606
    Лайки:
    173
    Пол:
    Мужской
    Репутация:
    3
    т.е. ммтоп использует именно табуляцию в качестве разделителя а не пробелы? пробел как вижу только дату от времени отделяет...
  13. Napalm Rain Программист Пользователи

    Сообщения:
    195
    Лайки:
    245
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    rstudio
    Страна:
    Russian Federation Russian Federation
    Не знаю, как сейчас, но год назад была табуляция. Я просто рвал строку по табу на массив и дальше работал с ним. Правда с кешами вместо логинов не запаривался, да и не вижу смысла в этом... но, тут уж каждому своё. Просто, универсальность методов, применяющихся для парсинга в данном случае несколько теряется. Каждый админ может придумать свою систему шифровки и от универсальных скриптов (а как я понимаю, ты пытаешься сделать именно его (поправь, если ошибаюсь)) толка не будет...
  14. alexdnepro Эксперт AngeliCore Пользователи Open Source Contributor White List

    Сообщения:
    754
    Лайки:
    1.313
    Пол:
    Мужской
    Репутация:
    6
    Юзайте регулярки, и будет вам счастье
    PHP:
    $pattern "/(\d+)\s+(\d+\.\d+\.\d+)\s(\d+:\d+:\d+)\s+(.+)\s+(.+)\s(\d+)/";
  15. SkyDev Программист Old school Пользователи Open Source Contributor

    Сообщения:
    197
    Лайки:
    234
    Пол:
    Мужской
    Репутация:
    -1
    Страна:
    Ukraine Ukraine
    Split('\t') есть :)
  16. alexdnepro Эксперт AngeliCore Пользователи Open Source Contributor White List

    Сообщения:
    754
    Лайки:
    1.313
    Пол:
    Мужской
    Репутация:
    6
    Регулярка более универсальный способ, особенно когда имеешь дело с файлами, которые могут редактировать другие пользователи (которые вместо табуляции могут поставить пробелов и т.д.)
  17. TopicStarter Overlay

    wsok Программист Пользователи

    Сообщения:
    606
    Лайки:
    173
    Пол:
    Мужской
    Репутация:
    3
    ну вроде получилось, хоть с голосованиями ни разу не работал, но надеюсь сделал все как нужно.

    [​IMG]

    вот сам код скрипта учета голосов, может будут советы по усовершенствованию?

    PHP:
    <?php

    include_once('../configure.php');
    $link = new mysqli($configure['db_host'], $configure['db_user'], $configure['db_pass'], $configure['db_name']);

    $ch curl_init(); 
    curl_setopt($chCURLOPT_URL$configure['url_stat_voice']);
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    $result curl_exec($ch);
    curl_close($ch);

    $list explode("\n",$result);
    foreach(
    $list as $key => $vol
    {
    $inf explode("\t",$vol);
    $rows mysqli_query($link"SELECT * FROM top_stats WHERE idv='{$inf[0]}' ORDER BY ids DESC LIMIT 1");
    if(!
    mysqli_num_rows($rows)){
        
    $result mysqli_query($link"SELECT ID,name,coins FROM users WHERE name='{$inf[3]}' ORDER BY ID DESC LIMIT 1");
        if(
    mysqli_num_rows($result)){
            
    $row mysqli_fetch_array($resultMYSQL_ASSOC);
            if(
    $inf[4] == && $configure['norm_voice'] >0){$sum $row['coins']+$configure['norm_voice']; $getkurs $configure['norm_voice'];}
        elseif(
    $inf[4] == && $configure['sms_voice'] >0){$sum $row['coins']+$configure['sms_voice']; $getkurs $configure['sms_voice'];}
        else{
    $sum $row['coins'];}
        
    mysqli_query($link"UPDATE users SET coins = '$sum' WHERE ID='{$row['ID']}' ORDER BY ID DESC LIMIT 1");
        
    mysqli_query($link"INSERT IGNORE INTO top_stats SET idv='{$inf[0]}', dat='{$inf[1]}', ip='{$inf[2]}', user='{$inf[3]}', type='{$inf[4]}', get_kurs='{$getkurs}'");
        }
        }
    }
    mysqli_close($link);
    ?>
  18. pilad Команда форума Модератор Пользователи

    Сообщения:
    1.740
    Лайки:
    480
    Пол:
    Мужской
    Репутация:
    1
    Команда:
    Freeman
    Если дополнение, то советы обычные . Дописать функцию отправку предметов на почту за голосование к примеру.Чтоб был выбор - голд или предмет.
  19. MorzE nullptr AngeliCore Пользователи

    Сообщения:
    198
    Лайки:
    134
    Пол:
    Мужской
    Репутация:
    3
    Страна:
    Russian Federation Russian Federation
    По мне дак гораздо удобнее юзать scanf, уж больно неприятный синтаксис у регулярок.

    Почему curl? Чем не устраивает file_get_contents?
  20. alexdnepro Эксперт AngeliCore Пользователи Open Source Contributor White List

    Сообщения:
    754
    Лайки:
    1.313
    Пол:
    Мужской
    Репутация:
    6
    Когда пишешь его сам, особых затруднений это не вызывает.
    В таком виде как в коде выше, curl конечно смысла нет использовать, а вообще он лучше из-за возможного набора параметров (таймаут, post запросы, ответ ошибки и пр.).
Черновик сохранён Черновик удалён
Similar Threads
  1. JoLan
    Ответов:
    11
    Просмотров:
    2.362
  2. MrPassion
    Ответов:
    0
    Просмотров:
    1.228
  3. New-X
    Ответов:
    10
    Просмотров:
    1.799
  4. apfilipp
    Ответов:
    11
    Просмотров:
    6.030
  5. Белый
    Ответов:
    9
    Просмотров:
    2.759
Загрузка...

Поделиться этой страницей