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

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

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';
 
Последнее редактирование:
Дааавно уже в паблике валяется :(
И с версии php 7.0 mysql не поддерживается.
 
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();
 
Давно не модно, юзать накрутку мультов. И так по 50 раз в день регаются по новой.
Вы бы хоть айпишник проверяли для приличия. Хотя спасет ненадолго.
 
Давно не модно, юзать накрутку мультов. И так по 50 раз в день регаются по новой.
Вы бы хоть айпишник проверяли для приличия. Хотя спасет ненадолго.
Можно не только айпишник, а еще и кукисы подкрутить :D
 
Можно не только айпишник, а еще и кукисы подкрутить :D
Над условие поставить, чтоб играли оба одновременно и с разных айпи n часов. Не каждый умеет играть с нескольких проксей. Так хоть будет процент реальных рефераплов.
 
Над условие поставить, чтоб играли оба одновременно и с разных айпи n часов. Не каждый умеет играть с нескольких проксей. Так хоть будет процент реальных рефераплов.
Бывают такое, что играет несколько людей с одного ип(пати), например дома у кого то..(Так я раньше играл). Либо брат/сестра. помогает(чу-чуть). не знаю как сейчас но раньше, приходилось делать фото себя с друзьями с листиками и никами на фоне ПК.
 
Бывают такое, что играет несколько людей с одного ип(пати), например дома у кого то..(Так я раньше играл). Либо брат/сестра. помогает(чу-чуть). не знаю как сейчас но раньше, приходилось делать фото себя с друзьями с листиками и никами на фоне ПК.
Всем насрать, но именно такие рефералки делают в мморпг, айпишку чекают. И пофигу на вашу многодетную семью и 100 друзей в одной сети.
 
можно готовые скрипты и инструкцию HELP!!!
 
Последнее редактирование:
Тебе уже дали готовый пример скрипта, тебе осталось лишь его собрать в единое целое, ничего сложного нет.
Создаем файл cronref.php в engine/modules/ , и cron поставить интервал запроса.(Время на усмотрение), если игроков мало то лучше 1-2 раза в день. не более!
Содержимое
как это выполнить?
И инструкцию можно?
 
и причем здесь гугл, я вопрос спросил трудно ответить, я тут понял создаем файл 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);
?>
и все что я понял а дальше что??
 
и причем здесь гугл, я вопрос спросил трудно ответить, я тут понял создаем файл 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);
?>
и все что я понял а дальше что??
Все - выбрасывай.
 
Да прибудет с тобой мозг
mozg-cheloveka1.png
 

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

Назад
Верх