Перейти к содержимому
La2Base
Главная
ЗагрузкиВикиФорумFAQ
ruen
Регистрация Войти
ГлавнаяФайлыВикиВойти
  • Главная
  • Загрузки
  • Вики
  • FAQ
  • Обратная связь
  • О проекте
  • Правила
  • Конфиденциальность
  • Условия использования

© 2026 la2base.com · Все права защищены

ruen
Форум/Web обвязка/[help]dle регистрация
Поиск

[help]dle регистрация

6 ответов156 просмотровСейчас просматривают: 1
segal
segal

Пользователь

Бывалый

Постов: 317

На форуме с: 03.11.2008

Репутация: +242

Рейтинг: 0

· 19.05.2009, 12:10

я попробовал сделать такой скрипт как у gwe толька для
дле чтоб регистрировала на сайте и в игре но когда регистрируюсь бьет ошибку

Код
Fatal error: Call to a member function connect() on a non-object in C:\xampplite\htdocs\engine\modules\register.php on line 127

вот сам скрипт
Раскрывающийся текст
Код
<?php
/*
=====================================================
Файл: register.php
-----------------------------------------------------
Назначение: (регистрация посетителя)
=====================================================
*/
if(!defined('DATALIFEENGINE'))
{
  die("Hacking attempt!");
}

//Подгружаем класс с функциями фильтрации
require_once ENGINE_DIR.'/classes/parse.class.php';

//Создаем объект и устанавливаем переменные
$parse = new ParseFilter();
$parse->safe_mode = true;
$stopregistration = FALSE;

//Смотрим, содержится ли в переданных параметрах doaction
if (isset ($_REQUEST['doaction'])) $doaction = $_REQUEST['doaction']; else $doaction = "";
//Если в конфиге не стоит группа пользователей, ставим по умолчанию: 4 (посетители)
$config['reg_group'] = intval($config['reg_group']) ? intval($config['reg_group']) : 4;

//------------------------------------------------
//Функция проверки регстрации
//------------------------------------------------
function check_reg ($name, $email, $password1, $password2, $fullname="check", $land="check", $old="00", $skey="check", $one_rule=true, $two_rule=true, $sec_code=1, $sec_code_session=1) {
    global $lang, $db, $db_g;
    $stop = "";

    if ( $sec_code != $sec_code_session OR !$sec_code_session) $stop .= $lang['reg_err_19']; //Проверка, соотв ли код безопасн, введенному
    if ($password1 != $password2) $stop .= $lang['reg_err_1']; //Проверка на соотв паролей
    if (strlen($password1) < 6) $stop .= $lang['reg_err_2']; //Проверка, если пассв меньше 6 символов
    if (strlen($name) > 20) $stop .= $lang['reg_err_3']; //Проверка, если имя больше 20 символов
    if (preg_match("/[\||\'|\<|\>|\"|\!|\$|\@|\&\~\*\+]/",$name)) $stop .= $lang['reg_err_4']; //Проверка, если в имени содержаться левые символы
    if ((!ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'. '@'.'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$', $email)) or (empty($email))) $stop .= $lang['reg_err_6']; //Проверка, если введен не правильный ящик имейл
    if ($name == "") $stop .= $lang['reg_err_7']; //Проверка, если имя пользователя пустое
    if (!$one_rule) $stop .= $lang['reg_err_21']; //Проверка подтвержения правил
    if (!$two_rule) $stop .= $lang['reg_err_22']; //Проверка подтвержения соглашения
    
    //Проверка количества символов введных в форму
    if (strlen($fullname) > 100) $stop .= $lang['reg_err_15'];
    if (strlen($land) > 100) $stop .= $lang['reg_err_16'];
    if (strlen($old) > 2) $stop .= $lang['reg_err_17'];
    if (strlen($skey) > 26) $stop .= $lang['reg_err_14'];
    
    if ($fullname=="") $stop .= $lang['reg_err_23'];
    if ($land=="") $stop .= $lang['reg_err_24'];
    if ($old=="") $stop .= $lang['reg_err_25'];
    if ($skey=="") $stop .= $lang['reg_err_26'];

    //Если поля формы заполнены верно, то
    if ($stop == "")
    {

        //Установка кодировки
        @setlocale(LC_CTYPE, array("ru_RU.CP1251", "ru_SU.CP1251", "ru_RU.KOI8-r", "ru_RU", "russian", "ru_SU", "ru"));
        $replace_word = array ('e' => '[eеё]', 'r' => '[rг]', 't' => '[tт]', 'y' => '[yу]','u' => '[uи]','i' => '[i1l!]','o' => '[oо0]','p' => '[pр]','a' => '[aа]','s' => '[s5]','w' => 'w','q' => 'q','d' => 'd','f' => 'f','g' => '[gд]','h' => '[hн]','j' => 'j','k' => '[kк]','l' => '[l1i!]','z' => 'z','x' => '[xх%]','c' => '[cс]','v' => '[vuи]','b' => '[bвь]','n' => '[nпл]','m' => '[mм]','й' => '[йиu]','ц' => 'ц','у' => '[уy]','е' => '[еeё]','н' => '[нh]','г' => '[гr]','ш' => '[шwщ]','щ' => '[щwш]','з' => '[з3э]','х' => '[хx%]','ъ' => '[ъь]','ф' => 'ф','ы' => '(ы|ь[i1l!]?)','в' => '[вb]','а' => '[аa]','п' => '[пn]','р' => '[рp]','о' => '[оo0]','л' => '[лn]','д' => 'д','ж' => 'ж','э' => '[э3з]','я' => '[я]','ч' => '[ч4]','с' => '[сc]','м' => '[мm]','и' => '[иuй]','т' => '[тt]','ь' => '[ьb]','б' => '[б6]','ю' => '(ю|[!1il][oо0])','ё' => '[ёеe]','1' => '[1il!]','2' => '2','3' => '[3зэ]','4' => '[4ч]','5' => '[5s]','6' => '[6б]','7' => '7','8' => '8','9' => '9','0' => '[0оo]','_' => '_','#' => '#','%' => '[%x]','^' => '[^~]','(' => '[(]',')' => '[)]','=' => '=','.' => '[.]','-' => '-');
        $name=strtolower($name);
        $name=strtr($name, $replace_word);

        //Проверка, есть ли в базе пользователь с таким именем и ящиком
        $row = $db->super_query ("SELECT COUNT(*) as count FROM " . USERPREFIX . "_users WHERE email = '$email' OR LOWER(name) REGEXP '[[:<:]]{$name}[[:>:]]'");

        if ($row['count']) $stop .= $lang['reg_err_8'];

    }

return $stop;

}
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

//Выбираем всех пользователей из базы
$row = $db->super_query("SELECT COUNT(*) as count FROM " . USERPREFIX . "_users");

//Смотрим, разрешена ли регистрация
if ($config['allow_registration'] != "yes")
{
    //Выдаем сообщение, если отключена регистрация
    msgbox ($lang['all_info'], $lang['reg_err_9']);
    $stopregistration = TRUE;
//Если максимальное количество пользователей уже зарегистрировано то запрещаем регистрацию
} elseif ($config['max_users'] > 0 AND $row['count'] > $config['max_users'] AND $row2['count'] > $config['max_users']) {

    msgbox ($lang['all_info'], $lang['reg_err_10']);
    $stopregistration = TRUE;

}

//Кнопка подтверждение регистрации нажата
if (isset($_POST['submit_reg'])) {

//Узнаем, включен ли подтверждение кода безопасности
    if ($config['allow_sec_code'] == "yes") {
        //Если да, то устанавливаем сессию для него
        $sec_code = $_POST['sec_code'];
        $sec_code_session = ($_SESSION['sec_code_session'] != '') ? $_SESSION['sec_code_session'] : false;
    } else {
        $sec_code = 1;
        $sec_code_session = 1;
    }

//Устанавливаем параметры для паролей, имени и ящика (добавить новые поля)
    $password1 = $db->safesql($parse->process($_POST['password1']));
    $password2 = $db->safesql($parse->process($_POST['password2']));
    $name = $db->safesql($parse->process(htmlspecialchars(trim($_POST['name']))));
    $email = $db->safesql($parse->process($_POST['email']));
    $one_rule = $db->safesql($parse->process($_POST['one_rule']));
    $two_rule = $db->safesql($parse->process($_POST['two_rule']));
    $fullname = $db->safesql($parse->process($_POST['fullname'])); //Имя в форме
    $land = $db->safesql($parse->process($_POST['land'])); //Страна
    $old = $db->safesql($parse->process($_POST['old'])); // Возраст
    $skey = $db->safesql($parse->process($_POST['skey'])); //SKEY
    $skey = str_replace("-","",$skey); //Убираем дефисы из ключа

//Переменная для хранения ошибки при регистрации
    $reg_error = check_reg ($name, $email, $password1, $password2, $fullname, $land, $old, $skey, $one_rule, $two_rule, $sec_code, $sec_code_session);
        
    //=========================================================================
    //Смотрим, существует ли пользователь в БД сервера игры        
    require_once ENGINE_DIR.'/data/lineagecf.php'; // подключение файла с параметрами для BD игрового сервера        
    //Подключаемся к БД сервера и смотрим, зарегистрирован ли пользователь там
    if(!$db_g->connect(    $la2config["loginserver"]["dbuser"], $la2config["loginserver"]["dbpass"], $la2config["loginserver"]["dbname"], $la2config["loginserver"]["dbhost"], 0)) {
        $reg_error = $lang['reg_err_31'];
    } else {
        // Делаем запрос
        $row2 = $db_g->super_query("SELECT COUNT(*) as count FROM accounts WHERE LOWER(login) REGEXP '[[:<:]]{$name}[[:>:]]'");
        $db->connect(DBUSER, DBPASS, DBNAME, DBHOST); //Переключаемся на БД Сайта
        if ($row2['count']) {
            $reg_error = $lang['reg_err_8'];
        }
    }
    //=========================================================================/**/

//------------------------------------------------
//Если нет ошибок, приступаем к регистрации
//------------------------------------------------
    if (!$reg_error) {

        //Если в конфиге включено подтверждение по ящику, высылаем линк
        if ($config['registration_type']) {

      include_once ENGINE_DIR.'/classes/mail.class.php';
      $mail = new dle_mail ($config);
            
             // Для дальнейшего перевода на класс PHPMailer()
             //include_once ENGINE_DIR.'/inc/class.phpmailer.php'; //Подключаем класс для отправки почты
             //$mail = new PHPMailer();
            
             //Берем шаблон письма из базы
             $row = $db->super_query("SELECT template FROM " . PREFIX . "_email where name='reg_mail' LIMIT 0,1");

             $row['template'] = stripslashes($row['template']); //Удаляем экранирование символов из шаблона

             //Составляем линк для подтверждения регистрации
             $idlink = rawurlencode(base64_encode($name."||".$email."||".md5($password1)."||".md5($name.$email.$config['key'])));

             //Подставляем в шаблон нужное имя, линк подтверждения и пароль
             $row['template'] = str_replace("{%username%}",$name, $row['template']);
             $row['template'] = str_replace("{%validationlink%}",$config['http_home_url']."index.php?do=register&doaction=validating&id=".$idlink, $row['template']);
             $row['template'] = str_replace("{%password%}", $password1, $row['template']);

             $mail->send ($email, $lang['reg_subj'], $row['template']); //Отправляем письмо

             //Если проблемы с отправкой письма
             if ($mail->send_error) msgbox ($lang['all_info'], $mail->smtp_msg);
             else msgbox ($lang['reg_vhead'], $lang['reg_vtext']);

             $stopregistration = TRUE;

        } else {

            //Если отключено, то генерируем линк в ссессии
            $doaction = "validating";
            $_REQUEST['id'] = rawurlencode(base64_encode($name."||".$email."||".md5($password1)."||".md5($name.$email.$config['key'])));
        }

    //Выводим ошибку если чтото не так
    } else {msgbox ($lang['reg_err_11'], $reg_error);}

}
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

//------------------------------------------------
//Если пользователь не регистрировался, загружаем ему форму регистрации
//------------------------------------------------
if ($doaction != "validating" AND !$stopregistration) {

//Загружаем шаблоны регистрационной формы
    $tpl->load_template('registration.tpl');

        $tpl->set('[registration]',"");
        $tpl->set('[/registration]',"");
        $tpl->set_block("'\\[validation\\](.*?)\\[/validation\\]'si",""); //Скрываем блоки валидации в шаблоне чтоб не отображались
        $path = parse_url($config['http_home_url']);

    if ($config['allow_sec_code'] == "yes") {
        $tpl->set('[sec_code]',"");
        $tpl->set('[/sec_code]',"");
        $tpl->set('{reg_code}',"<span id=\"dle-captcha\"><img src=\"".$path['path']."engine/modules/antibot.php\" alt=\"{$lang['sec_image']}\" border=\"0\" /><br /><a onclick=\"reload(); return false;\" href=\"#\">{$lang['reload_code']}</a></span>");
    } else {
        $tpl->set('{reg_code}',"");
        $tpl->set_block("'\\[sec_code\\](.*?)\\[/sec_code\\]'si","");
    }
    
    //-----------------------------
    //S-Key
    //-----------------------------
    // Символы, которые будут использоваться в ключе.
    $chars="1234567890QAZXSWEDCVFRTGBNHYUJMKIOLP";
    // Количество символов.
    $max=25;
    // Определяем количество символов в $chars
    $size=StrLen($chars)-1;
    // Определяем пустую переменную, в которую и будем записывать символы.
    $skey=null;
    // Создаём Ключ.
       while($max--)
           $skey.=$chars[rand(0,$size)];
    //Формируем ключ в удобном для чтении виде по парам
    $part1 = substr($skey, 0, 5);
    $part2 = substr($skey, 5, 5);
    $part3 = substr($skey, 10, 5);
    $part4 = substr($skey, 15, 5);
    $part5 = substr($skey, 20, 5);
    $skey = $part1.'-'.$part2.'-'.$part3.'-'.$part4.'-'.$part5;
    //Устанавливаем переменную в шаблон
    $tpl->set('{s-key}', $skey);
    //-----------------------------

//Обработка данных формы
$tpl->copy_template = "<form  method=\"post\" name=\"registration\" id=\"registration\" action=\"".$config['http_home_url']."index.php?do=register\">\n".$tpl->copy_template."
<input name=\"submit_reg\" type=\"hidden\" id=\"submit_reg\" value=\"submit_reg\" />
</form>";

$tpl->copy_template .= <<<HTML
<script language='JavaScript' type="text/javascript">
function reload () {

    var rndval = new Date().getTime();

    document.getElementById('dle-captcha').innerHTML = '<img src="{$path['path']}engine/modules/antibot.php?rndval=' + rndval + '" border="0" width="120" height="50"><br /><a onclick="reload(); return false;" href="#">{$lang['reload_code']}</a>';

};
</script>
HTML;

$tpl->compile('content');
$tpl->clear();

}

//------------------------------------------------
//Страница валидации, если он нажал подтвердить регистрацию
//------------------------------------------------
if (isset($_POST['submit_val'])) {

    //Данные из ПОСТ помещаем в переменные (Имя и пароль)
    $user_arr = explode ("||", base64_decode(rawurldecode($_POST['id'])));
    $user = trim($db->safesql($user_arr[0]));
    $pass = md5($user_arr[2]);

    $db->query("SELECT * FROM " . USERPREFIX . "_users where name = '$user' AND password='$pass'");

    //Если пользователь в базе не найден, то пишем - доспуп запрещен, если находим то передаем переменной параметры из бызы
    if (!$db->num_rows()) $stop .= "Access Denied"; else $row = $db->get_row();

    $db->free();

    //Если что-то не так, выдаем ошибку
    if ($stop){ msgbox ($lang['reg_err_18'], $stop); }
    else {

        //$db->query("UPDATE " . USERPREFIX . "_users set fullname='$fullname', skey='$skey', land='$land', old='$old' where name='$user'");

        msgbox ($lang['reg_ok'], $lang['reg_ok_1']);

        $stopregistration = TRUE;
    }
}

//Если пользователь прошел по ссылке подтверждения регистрации в письме
if ( ($doaction == "validating") AND (!$stopregistration) AND (!$_POST['submit_val']) ) {

    $user_arr = explode ("||", base64_decode(rawurldecode($_REQUEST['id'])));

    $regpassword = md5($user_arr[2]);
    $regpassword2 = base64_encode(pack("H*", sha1(utf8_encode($password1))));
    //$regpassword2 = base64_encode(pack("H*", sha1(utf8_encode($user_arr[2]))));
    //$regpassword2 = $user_arr[2];
    
    $name = trim($db->safesql(htmlspecialchars($parse->process($user_arr[0]))));
    $email = trim($db->safesql($parse->process($user_arr[1])));

    if (md5($name.$email.$config['key']) != $user_arr[3]) die ('ID not valid!');

    $reg_error = check_reg($name, $email, $regpassword, $regpassword);

    if ($reg_error != "") {
        msgbox ($lang['reg_err_11'], $reg_error);
        $stopregistration = TRUE;
    } else {

    if (($_REQUEST['step'] != 2) AND $config['registration_type']) {
        $stopregistration = TRUE;
        $lang['confirm_ok'] = str_replace ('{email}', $email, $lang['confirm_ok']);
        $lang['confirm_ok'] = str_replace ('{login}', $name, $lang['confirm_ok']);
        msgbox ($lang['all_info'], $lang['confirm_ok']. "<br /><br /><a href=\"".$config['http_home_url']."index.php?do=register&doaction=validating&step=2&id=".rawurlencode($_REQUEST['id'])."\">Продолжить регистрацию на сайте</a>");
    } else {

    $add_time = time()+($config['date_adjust']*60);
    $_IP = $db->safesql($_SERVER['REMOTE_ADDR']);
    if (intval($config['reg_group']) < 3) $config['reg_group'] = 4;

    //РЕГИСТРАЦИЯ пользователя в БД сайта
     $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."')");
    //РЕГИСТРАЦИЯ пользователя в БД сервера
    require_once ENGINE_DIR.'/data/lineagecf.php'; // подключение файла с параметрами для BD игрового сервера
    
    //Подключаемся к БД сервера и заносим регистрационные данные в таблицу аккаунтов
    if(!$db_g->connect(    $la2config["loginserver"]["dbuser"], $la2config["loginserver"]["dbpass"], $la2config["loginserver"]["dbname"], $la2config["loginserver"]["dbhost"], 0)) {    
        msgbox ($lang['reg_err_30'], $lang['reg_err_31']);
    } else {
        // Делаем запрос
        $add_accaunt = "INSERT INTO `accounts`(login,password,lastactive,accesslevel,lastIP) VALUES ('$name','$regpassword2','0','0','".$_IP."')";
        $db_g->query($add_accaunt);
        $db->connect(DBUSER, DBPASS, DBNAME, DBHOST); //Переключаемся на БД Сайта
    }    
    }

  }

}


//Страница подтверждения регистрации
if ($doaction == "validating" AND !$stopregistration) {

    $tpl->load_template('registration.tpl');

        $tpl->set('[validation]',"");
        $tpl->set('[/validation]',"");
        $tpl->set_block("'\\[registration\\].*?\\[/registration\\]'si",""); //Блокирвать блок с формой регистрации

$tpl->copy_template = "<form  method=\"post\" name=\"registration\" enctype=\"multipart/form-data\" action=\"".$PHP_SELF."\">\n".$tpl->copy_template."
<input name=\"submit_val\" type=\"hidden\" id=\"submit_val\" value=\"submit_val\">
<input name=\"do\" type=\"hidden\" id=\"do\" value=\"register\">
<input name=\"doaction\" type=\"hidden\" id=\"doaction\" value=\"validating\">
<input name=\"id\" type=\"hidden\" id=\"id\" value=\"{$_REQUEST['id']}\">
</form>";

    $tpl->compile('content');
    $tpl->clear();
}

?>

В чом проблема?

0
Дмитрий
Дмитрий

Пользователь

Ветеран

Постов: 834

На форуме с: 30.05.2007

Репутация: +632

Рейтинг: 0

· 19.05.2009, 16:30

А сели убрать пробелы перед

Код
$db_g->connect(

WebDeveloper сервера DARKWORLD

0
segal
segal

Пользователь

Бывалый

Постов: 317

На форуме с: 03.11.2008

Репутация: +242

Рейтинг: 0

· 19.05.2009, 18:02

та же ошибка

0
sanja
sanja

Пользователь

Бывалый

Постов: 197

На форуме с: 26.08.2008

Репутация: +280

Рейтинг: 0

· 19.05.2009, 21:22

segala: я попробовал сделать такой скрипт как у gwe толька для
дле чтоб регистрировала на сайте и в игре но когда регистрируюсь бьет ошибку
Код
Fatal error: Call to a member function connect() on a non-object in C:\xampplite\htdocs\engine\modules\register.php on line 127

В чом проблема?


Обращение к переменной которая не объявлена классом...
смотри в файле engine/data/dbcofig.php есть ли там описанная переменная $db_g так как $db ($db = new db;)

0
segal
segal

Пользователь

Бывалый

Постов: 317

На форуме с: 03.11.2008

Репутация: +242

Рейтинг: 0

· 20.05.2009, 10:08

теперь следующую проблема когда нажимаю регистрация пишет

Цитата
Администратором было запрещено использовать данный логин для регистрации{descr}
, по причине: {descr}Администратором было запрещено использовать данный E-Mail для регистрации{descr}

0
segal
segal

Пользователь

Бывалый

Постов: 317

На форуме с: 03.11.2008

Репутация: +242

Рейтинг: 0

· 20.05.2009, 14:39

тему можно закрыть я все сам настроил

0
Тема закрыта для ответов