1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
  3. Данный раздел создан исключительно для релизов! Вопросы по лаунчеру или обвязке задавайте ТОЛЬКО в соответсвующей теме автора. Любые другие темы будут удалены, а авторы понесут наказание.

Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Веб [DLE+CRON]Реферальная система с выдачей бонуса при достижении 100 минут игры

Тема в разделе "Веб-обвязки и лаунчеры", создана пользователем ZONCCK, 11 фев 2016.

  1. Автор темы
    ZONCCK

    ZONCCK Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    ZONCCK
    Всем привет! Нигде не нашел подобный гайд, решил написать свой =).
    НУЖЕН CRON!
    Так, что это вообще такое? Объясню: Допустим, есть игрок, которому оч понравился ваш проект. Он решил позвать друзей. Он кидает другу свою реферальную ссылку, тот по ней регистрируется и идет играть на сервер. Когда второй отыгрывает 100 минут, первому(тот, кто пригласил) начисляется бонус в виде 2500 Iconomy монет(настраивается в refcron.php). А теперь, приступим к установке:
    Итак, первое, что нам нужно, это установить плагин Playtime. Он служит для записи отыгранных минут на сервере(ах) в базу данных. ССЫЛКА
    Далее нам нужно залить php скрипт на свой сайт. Желательно в корень, чтобы ссылка была не очень длинной. Он отвечает за создание cookie в котором будет храниться имя реферала.
    Так же нужно скачать еще один скрипт, который будет запускаться в CRON. Открываете его и указываете данные для доступа к бд.
    Все скрипты в прикрепленных файлах.
    Всё, дальше будем уже редактировать.
    1. Открываем файл engine/modules/register.php, ищем примерно такую строку:
    PHP:
    $db->query"INSERT INTO " USERPREFIX "_users (name, password, email, reg_date, lastdate, user_group, info, signature, favorites, xfields, logged_ip) VALUES ('$name', '$regpassword', '$email', '$add_time', '$add_time', '" $config['reg_group'] . "', '', '', '', '', '" $_IP "')" );
    Заменяем на:
    PHP:
    if (isset($_COOKIE['referalstoryworld']) and !empty($_COOKIE['referalstoryworld'])){
                        
    $referal=mysql_real_escape_string($_COOKIE['referalstoryworld']);
                        
    $db->query"INSERT INTO " USERPREFIX "_users (name, password, email, reg_date, lastdate, user_group, info, signature, favorites, xfields, logged_ip, referal) VALUES ('$name', '$regpassword', '$email', '$add_time', '$add_time', '" $config['reg_group'] . "', '', '', '', '', '" $_IP "', '" $referal "')");
                }
                    else
                        
    $db->query"INSERT INTO " USERPREFIX "_users (name, password, email, reg_date, lastdate, user_group, info, signature, favorites, xfields, logged_ip) VALUES ('$name', '$regpassword', '$email', '$add_time', '$add_time', '" $config['reg_group'] . "', '', '', '', '', '" $_IP "')" );
    После редактирования нам нужно выполнить один запрос в бд. Выполнять его нужно ТОЛЬКО после того, как плагин создаст свою таблицу.
    Код:
    ALTER TABLE playTime ADD 'bonus' INT DEFAULT'0'
    Делаем еще один запрос:
    Код:
    ALTER TABLE dle_users ADD referal CHAR(30)
    Готово. Теперь осталось подключить файл refcron.php к крону. Заходим в ПУ кроном, выбираем каждую минуту(все звездочки) и пишем команду
    Код:
    wget -O - -q -t 1 http://www.сайт.ru/refcron.php
    Для вывода реферальной ссылки в профиль пользователя открываем userinfo.tpl(у вас мб по-другому называется) и в нужном месте пишем это:
    HTML:
    <form><input size=40 type=text value='http://САЙТ.ru/ref.php?user={usertitle}'></form>
    . Вот и все. Надеюсь, что написал все. Если есть какие-нибудь замечания, пишите, с удовольствием выслушаю=).
    В будущем добавлю скрипт для вывода списка всех рефералов в профиле пользователя.
     

    Вложения:

    • refsystem.zip
      Размер файла:
      1.002 байт
      Просмотров:
      107
    Последнее редактирование: 21 июн 2016
  2. Toster_tpl

    Toster_tpl Старожил Пользователь

    Баллы:
    153
    sql injection
     
  3. GHOST-MEN

    GHOST-MEN Активный участник Пользователь

    Баллы:
    76
    Неужели PDO, браво :good:
    Только у тя инъекции.
     
  4. Nupke

    Nupke Активный участник Пользователь

    Баллы:
    88
    кавычки не фильтруются вроде))
     
  5. GHOST-MEN

    GHOST-MEN Активный участник Пользователь

    Баллы:
    76
    Жаль, что теперь у школоты будут проЭкты похожие на нормальный проект...
    Ну хотя, чего-уж там...
     
  6. Gitler1234

    Gitler1234 Ньюби Пользователь

    Баллы:
    1
    Имя в Minecraft:
    Lox
    Используем PDO, но не знаем как правильно пользоваться...
    В рефералке использовать логин юзера вместо id тоже молодец.
    Cookie можно спокойно менять, так что инъекция.
    Кто поставил, дайте сайтик мне побаловаться хочется.
     
  7. Автор темы
    ZONCCK

    ZONCCK Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    ZONCCK
    Понял где, исправлю. Спасибо.
    Где я неправильно пользовался? Скажи конкретнее, буду учиться.
    Инъекцию исправлю.
    Ну прости:)
     
  8. GHOST-MEN

    GHOST-MEN Активный участник Пользователь

    Баллы:
    76
    Просто бесит такая школота, которая ничего не умеет, и живёт за чужой труд...:)
    И да, заметка, 100 минут это очень мало, я уверен, найдётся такой школьник, который будет накручивать, не смотря что ему это надоест. Минимум 5 часов нужно.
     
  9. Автор темы
    ZONCCK

    ZONCCK Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    ZONCCK
    Можно запрос отредактировать немного и все. Ладно, вынесу в массив с конфигом.
    UPD: В конфиг вынесены два значения(номинал бонуса и кол-во минут, которые нужно отыграть рефералу)
    Пофикшена sql инъекция.
     
  10. Gitler1234

    Gitler1234 Ньюби Пользователь

    Баллы:
    1
    Имя в Minecraft:
    Lox
    Смотри часть CRON-а.
     

    Вложения:

    • referalCron.zip
      Размер файла:
      1.001 байт
      Просмотров:
      16
  11. Автор темы
    ZONCCK

    ZONCCK Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    ZONCCK
    А чем мой вариант не катит?
    Кстати, инъекцию хоть в том месте я пофиксил, или нет?:D
     
  12. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Поставь еще проверку на одинаковый ip, чтоб сами себе не накручивали.
     
  13. Автор темы
    ZONCCK

    ZONCCK Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    ZONCCK
    Хорошо, в будущем прикручу :). Ответь в лс, пожалуйста, если время найдешь.
     
  14. AIcar

    AIcar Активный участник Пользователь

    Баллы:
    66
    Плагин playtime не создает в БД таблицы. Какие есть варианты? Версия 1.7.10
     
  15. Kela-4D

    Kela-4D Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Kelatyh
    Кому надо рефералка через site.ru/follow/NAME
     
  16. Bars

    Bars Старожил Девелопер Пользователь

    Баллы:
    173
    Вы еще пользуетесь iConomy? Сколько лет прошло с его неактуальности...
     
  17. Etro

    Etro Активный участник Пользователь

    Баллы:
    78
    Это норма же...
     
  18. Незнайчик

    Незнайчик Активный участник Пользователь

    Баллы:
    76
    А есть что-то лучше и почему?)
     
  19. Bars

    Bars Старожил Девелопер Пользователь

    Баллы:
    173
    Fe Economy
     
  20. Doker96

    Doker96 Активный участник Пользователь

    Баллы:
    78
    инъекцию исправили?
     

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