Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
  • Данный раздел создан исключительно для релизов! Вопросы по лаунчеру или обвязке задавайте ТОЛЬКО в соответсвующей теме автора. Любые другие темы будут удалены, а авторы понесут наказание.

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

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
    refsystem.zip
    Размер файла
    1.002 байт
    Просмотров
    107
Последнее редактирование:
Всем привет! Нигде не нашел подобный гайд, решил написать свой =).
НУЖЕН 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']))
                    $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 . "', '" . $_COOKIE['referalstoryworld'] . "')");
                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>
. Вот и все. Надеюсь, что написал все. Если есть какие-нибудь замечания, пишите, с удовольствием выслушаю=).
В будущем добавлю скрипт для вывода списка всех рефералов в профиле пользователя.
Неужели PDO, браво :good:
Только у тя инъекции.
 
кавычки не фильтруются вроде))
 
Жаль, что теперь у школоты будут проЭкты похожие на нормальный проект...
Ну хотя, чего-уж там...
 
Используем PDO, но не знаем как правильно пользоваться...
В рефералке использовать логин юзера вместо id тоже молодец.
Cookie можно спокойно менять, так что инъекция.
Кто поставил, дайте сайтик мне побаловаться хочется.
 
Понял где, исправлю. Спасибо.
Используем PDO, но не знаем как правильно пользоваться...
В рефералке использовать логин юзера вместо id тоже молодец.
Cookie можно спокойно менять, так что инъекция.
Кто поставил, дайте сайтик мне побаловаться хочется.
Где я неправильно пользовался? Скажи конкретнее, буду учиться.
Инъекцию исправлю.
Жаль, что теперь у школоты будут проЭкты похожие на нормальный проект...
Ну хотя, чего-уж там...
Ну прости:)
 
Просто бесит такая школота, которая ничего не умеет, и живёт за чужой труд...:)
И да, заметка, 100 минут это очень мало, я уверен, найдётся такой школьник, который будет накручивать, не смотря что ему это надоест. Минимум 5 часов нужно.
 
Просто бесит такая школота, которая ничего не умеет, и живёт за чужой труд...:)
И да, заметка, 100 минут это очень мало, я уверен, найдётся такой школьник, который будет накручивать, не смотря что ему это надоест. Минимум 5 часов нужно.
Можно запрос отредактировать немного и все. Ладно, вынесу в массив с конфигом.
UPD: В конфиг вынесены два значения(номинал бонуса и кол-во минут, которые нужно отыграть рефералу)
Пофикшена sql инъекция.
 
Поставь еще проверку на одинаковый ip, чтоб сами себе не накручивали.
 
Плагин playtime не создает в БД таблицы. Какие есть варианты? Версия 1.7.10
 
Кому надо рефералка через site.ru/follow/NAME
 
Вы еще пользуетесь iConomy? Сколько лет прошло с его неактуальности...
 

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

Назад
Верх