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

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

Веб [DLE] Реферальная система + Поощрение

Тема в разделе "Веб-обвязки и лаунчеры", создана пользователем Kela-4D, 27 фев 2018.

  1. Автор темы
    Kela-4D

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

    Баллы:
    143
    Имя в Minecraft:
    Kelatyh
    Привет, скрипт реферальной системы с поощрением после 3 часов игры на сервере!
    Работаем с плагином PlayTime(подключенным к Базе данным)
    Для её установки надо отредактировать 2 файла:
    1. main.php - в /engine/modules/
    2. register.php - в /engine/modules/
    И так, начнем!
    Открываем main.php, находим:
    PHP:
    $tpl->load_template 'main.tpl' );
    Ниже вставляем:
    PHP:
    if(strstr($_SERVER['REQUEST_URI'],'/follow/')){
        if(!isset(
    $_COOKIE['ref_name'])){
            
    $name_ref str_replace("/follow/","",$_SERVER['REQUEST_URI']);
            if(!empty(
    $name_ref)) setcookie("ref_name",$name_ref,time()+2592000,'/');
        }
        
    header("Location: /");
        exit;
    }
    Сохраняем, выходим!
    Далее открываем 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['ref_name'])){
                    
    $db->query"INSERT INTO " USERPREFIX "_users (name, password, email, reg_date, lastdate, user_group, info, signature, favorites, xfields, logged_ip, byurl, confirm) VALUES ('$name', '$regpassword', '$email', '$add_time', '$add_time', '" $config['reg_group'] . "', '', '', '', '', '" $_IP "', '".$db->safesql($_COOKIE['ref_name'])."', 'FALSE')" );
                    }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 "')" );
                            }
    Чуть ниже находим:
    PHP:
    set_cookie"dle_password"$user_arr[2], 365 );
    Ниже добавляем:
    PHP:
    setcookie("ref_name","",time()-1,'/');
    Создаем файл cronref.php в engine/modules/ , и cron поставить интервал запроса.(Время на усмотрение), если игроков мало то лучше 1-2 раза в день. не более!
    Содержимое:
    PHP:
    #Получаем всех не подтвержденных игроков
    $qr_result mysql_query("select * from `dle_users` WHERE `confirm` = 'FALSE'")
    or die(
    mysql_error());

    #С каждым из них делаем...
    while($data mysql_fetch_array($qr_result)){
        
    #Проверяем, регистрировался он по ссылке игрока, если нет, выдаем подтверждение что бы не болтался каждый раз
        
    if($data['byurl'] <> ''){
        
    #Получаем время игрока на сервере
        
    $resulttime mysql_query("SELECT * FROM `playTime` WHERE `username` = '".$data['name']."'");
        
    $row1 mysql_fetch_array($resulttime);
        
    $playedTime $row1['playtime'];
     
        
    #Если время больше трех часов, выдаем подтверждение и награду пригласившему
        
    if($playedTime >= 180){
            
    mysql_query("UPDATE `dle_users` SET `confirm` = 'TRUE'  WHERE `name` = '".$data['name']."'");
            
    mysql_query("UPDATE `dle_users` SET `money` = `money`+20  WHERE `name` = '".$data['byurl']."'");
        }
        }else{
               
    mysql_query("UPDATE `dle_users` SET `confirm` = 'TRUE'  WHERE `name` = '".$data['name']."'");
        }
    }
    mysql_close($connect_to_db);
    ?>
    PHP:
    <?php

        define
    ('DATALIFEENGINE'true);
        
    define('ROOT_DIR'dirname (__DIR__));
        
    define('ENGINE_DIR'ROOT_DIR '/engine');

        require_once 
    ENGINE_DIR '/classes/mysql.php';
        require_once 
    ENGINE_DIR '/data/dbconfig.php';

        
    $qr_result $db->super_query("SELECT u.name, u.byurl FROM dle_users as u, playTime as p WHERE p.username = u.name AND u.confirm = 'FALSE' AND u.byurl IS NOT NULL AND p.playtime >= 180"true);

        foreach ( 
    $qr_result as $row ) {
            
    $db->query("UPDATE dle_users SET confirm = 'TRUE' WHERE name = '" $db->safesql($row['name']) . "'");
            
    $db->query("UPDATE dle_users SET money = money + '20' WHERE name = '" $db->safesql($row['byurl']) . "'");
        }

        
    $db->close();
    Thanks for @Kimato
    С PHP частью закончили, переходим к MySQL
    Код:
    ALTER TABLE `dle_users` ADD byurl` varchar(255) NOT NULL, `confirm` varchar(255) NOT NULL DEFAULT 'FALSE';
     
    Последнее редактирование: 31 мар 2019
  2. GHOST-MEN

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

    Баллы:
    76
    Дааавно уже в паблике валяется :(
    И с версии php 7.0 mysql не поддерживается.
     
  3. Sky007

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

    Баллы:
    66
    И хорошо что не поддерживается)
    Но тебе ни кто не запрещает юзать версию ниже:whistle:
     
  4. Kimato

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

    Баллы:
    76
    1. Почему, делая на dle, ты изобретаешь велосипед по новой? Зачем новое подключение, зачем запросы создавать по новой, когда все уже есть?
    2. Почему varchar 255, если можно просто tinyint(1)?
    3. ...

    Почему вы оказываете услуги другим людям?

    PHP:
    <?php

        define
    ('DATALIFEENGINE'true);
        
    define('ROOT_DIR'dirname (__DIR__));
        
    define('ENGINE_DIR'ROOT_DIR '/engine');

        require_once 
    ENGINE_DIR '/classes/mysql.php';
        require_once 
    ENGINE_DIR '/data/dbconfig.php';

        
    $qr_result $db->super_query("SELECT u.name, u.byurl FROM dle_users as u, playTime as p WHERE p.username = u.name AND u.confirm = '0' AND u.byurl IS NOT NULL AND p.playtime >= 180"true);

        foreach ( 
    $qr_result as $row ) {
            
    $db->query("UPDATE dle_users SET confirm = '1' WHERE name = '" $db->safesql($row['name']) . "'");
            
    $db->query("UPDATE dle_users SET money = money + '20' WHERE name = '" $db->safesql($row['byurl']) . "'");
        }

        
    $db->close();
     
  5. alexandrage

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

    Баллы:
    173
    Давно не модно, юзать накрутку мультов. И так по 50 раз в день регаются по новой.
    Вы бы хоть айпишник проверяли для приличия. Хотя спасет ненадолго.
     
  6. GHOST-MEN

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

    Баллы:
    76
    Можно не только айпишник, а еще и кукисы подкрутить :D
     
  7. alexandrage

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

    Баллы:
    173
    Над условие поставить, чтоб играли оба одновременно и с разных айпи n часов. Не каждый умеет играть с нескольких проксей. Так хоть будет процент реальных рефераплов.
     
  8. Автор темы
    Kela-4D

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

    Баллы:
    143
    Имя в Minecraft:
    Kelatyh
    Бывают такое, что играет несколько людей с одного ип(пати), например дома у кого то..(Так я раньше играл). Либо брат/сестра. помогает(чу-чуть). не знаю как сейчас но раньше, приходилось делать фото себя с друзьями с листиками и никами на фоне ПК.
     
  9. alexandrage

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

    Баллы:
    173
    Всем насрать, но именно такие рефералки делают в мморпг, айпишку чекают. И пофигу на вашу многодетную семью и 100 друзей в одной сети.
     
  10. Автор темы
    Kela-4D

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

    Баллы:
    143
    Имя в Minecraft:
    Kelatyh
  11. OZTG

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

    Баллы:
    1
    Имя в Minecraft:
    HENDER
    можно готовые скрипты и инструкцию HELP!!!
     
    Последнее редактирование: 22 май 2018
  12. OZTG

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

    Баллы:
    1
    Имя в Minecraft:
    HENDER
    братан помоги пж!
     
  13. Автор темы
    Kela-4D

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

    Баллы:
    143
    Имя в Minecraft:
    Kelatyh
    ?
     
  14. GHOST-MEN

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

    Баллы:
    76
    Тебе уже дали готовый пример скрипта, тебе осталось лишь его собрать в единое целое, ничего сложного нет.
     
  15. OZTG

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

    Баллы:
    1
    Имя в Minecraft:
    HENDER
    Создаем файл cronref.php в engine/modules/ , и cron поставить интервал запроса.(Время на усмотрение), если игроков мало то лучше 1-2 раза в день. не более!
    Содержимое
    как это выполнить?
    И инструкцию можно?
     
  16. GHOST-MEN

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

    Баллы:
    76
    #LinkToGoogle
     
  17. OZTG

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

    Баллы:
    1
    Имя в Minecraft:
    HENDER
    и причем здесь гугл, я вопрос спросил трудно ответить, я тут понял создаем файл cronref.php в engine/modules
    далее скрипт в него вставляем
    #Получаем всех не подтвержденных игроков
    $qr_result = mysql_query("select * from `dle_users` WHERE `confirm` = 'FALSE'")
    or die(mysql_error());

    #С каждым из них делаем...
    while($data = mysql_fetch_array($qr_result)){
    #Проверяем, регистрировался он по ссылке игрока, если нет, выдаем подтверждение что бы не болтался каждый раз
    if($data['byurl'] <> ''){
    #Получаем время игрока на сервере
    $resulttime = mysql_query("SELECT * FROM `playTime` WHERE `username` = '".$data['name']."'");
    $row1 = mysql_fetch_array($resulttime);
    $playedTime = $row1['playtime'];

    #Если время больше трех часов, выдаем подтверждение и награду пригласившему
    if($playedTime >= 180){
    mysql_query("UPDATE `dle_users` SET `confirm` = 'TRUE' WHERE `name` = '".$data['name']."'");
    mysql_query("UPDATE `dle_users` SET `money` = `money`+20 WHERE `name` = '".$data['byurl']."'");
    }
    }else{
    mysql_query("UPDATE `dle_users` SET `confirm` = 'TRUE' WHERE `name` = '".$data['name']."'");
    }
    }
    mysql_close($connect_to_db);
    ?>
    и все что я понял а дальше что??
     
  18. alexandrage

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

    Баллы:
    173
    Все - выбрасывай.
     
  19. OZTG

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

    Баллы:
    1
    Имя в Minecraft:
    HENDER
    всм??
     
  20. GHOST-MEN

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

    Баллы:
    76
    Да прибудет с тобой мозг[​IMG]
     

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