<?php
/****************************************/
/* */
/* Lineage2 DLE Module, © rb338 */
/* ------------------------- */
/* [registration.php - reg, activate] */
/* uses: register.tpl, */
/* mail_registration.tpl */
/* */
/****************************************/
if(!defined('DATALIFEENGINE')) die("Hacking attempt!");
if($_action == "reg"){
$error_str = '';
$reg_login = mysql_escape_string($_REQUEST["l2login"]);
$reg_email = mysql_escape_string($_REQUEST["l2email"]);
if($_SESSION['captcha_keystring'] != $_REQUEST['kcaptcha']) $error_str .= "<li> Код c картинки не верный.\n";
if(empty($reg_login) || empty($_REQUEST["l2password"]) || empty($_REQUEST["l2password2"])
|| empty($_REQUEST["l2email"]) || empty($_REQUEST["l2answer"]) || empty($_REQUEST["l2question"])) $error_str .= "<li> Все поля необходимы к заполнению.\n";
if(strlen($reg_login)>16 || strlen($reg_login)<4) $error_str .= "<li> Логин должен быть не меньше 4 и не больше 16 символов.\n";
if($_REQUEST["l2password"] != $_REQUEST["l2password2"]) $error_str .= "<li> Указанные пароли не совпадают.\n";
if(strlen($_REQUEST["l2answer"])<4 || strlen($_REQUEST["l2question"])<4) $error_str .= "<li> Вопрос и ответ должны быть не меньше 4 символов.\n";
if(!check_email($reg_email)) $error_str .= "<li> Адрес email указан не верно.\n";
else{
if($dbl->sql_numrows($dbl->sql_query("SELECT * FROM accounts WHERE email='$reg_email' LIMIT 1"))) $error_str .= "<li> Указанный email уже используется.\n";
if($dbl->sql_numrows($dbl->sql_query("SELECT * FROM accounts_temp WHERE email='$reg_email' LIMIT 1"))) $error_str .= "<li> Указанный email уже используется, но соответствующий аккаунт ещё не активирован.\n";
}
if(preg_match("|[а-яА-Я]|", $_REQUEST["l2password2"])) $error_str .= "<li> Пароль не может содержать символы кириллицы.\n";
if(!preg_match("/^[a-zA-Z0-9_-]+$/", $reg_login)) $error_str .= "<li> Логин содержит недопустимые символы.\n";
else{
if($dbl->sql_numrows($dbl->sql_query("SELECT * FROM accounts WHERE login='$reg_login' LIMIT 1"))) $error_str .= "<li> Указанный логин уже занят.\n";
if($dbl->sql_numrows($dbl->sql_query("SELECT * FROM accounts_temp WHERE login='$reg_login' LIMIT 1"))) $error_str .= "<li> Логин уже занят, но соответствующий аккаунт ещё не активирован.\n";
}
if($error_str != '') $lineage = "При регистрации произошли следующие ошибки:<br>".$error_str."<center><a href='".GetURL($_link,"registration")."'>назад</a></center>";
// добавление акка в темповую бд
else{
$reg_pass = mysql_escape_string(base64_encode(pack('H*', sha1($_REQUEST["l2password"]))));
$reg_pass_nondecoded = mysql_escape_string($_REQUEST["l2password"]);
$reg_answ = mysql_escape_string($_REQUEST["l2answer"]);
$reg_question = mysql_escape_string($_REQUEST["l2question"]);
$reg_hash = md5(time().$reg_login.rand());
$dbl->sql_query("INSERT INTO `accounts_temp` VALUES ('$reg_login', '$reg_pass', '$reg_email', '$reg_answ', '$reg_question', UNIX_TIMESTAMP(), '$reg_hash')");
$sql_error = $dbl->sql_error();
// отправка мыла
if($sql_error["code"]==0){
$tpl->load_template($tpldir.'/lineage/mail_registration.tpl');
$tpl->set('{reg_login}', $reg_login);
$tpl->set('{reg_pass}', $reg_pass_nondecoded);
$tpl->set('{reg_question}', $reg_question);
$tpl->set('{reg_answ}', $reg_answ);
$tpl->set('{home_url}', $config['http_home_url']);
$tpl->set('{reg_hash}', $reg_hash);
$tpl->compile('mail_registration');
$mess = $tpl->result["mail_registration"];
include_once ENGINE_DIR.'/classes/mail.class.php';
$mail = new dle_mail ($config);
$mail->send($reg_email, 'Подтверждние регистрации '.$config['home_title'], $mess);
$lineage .= "<center>Поздравляем, Вы успешно зарегистрировали аккаунт!<br>На Ваш e-mail выслано подтверждение регистрации.</center><br />";
InsertLogRecord($reg_login, 'account registration');
}
else{
$lineage = "<div class='warning center'>Неизвестная ошибка, попробуйте еще раз!</div><br />";
$lineage.= "<center><a href='".GetURL($_link,"registration")."'>назад</a></center>";
}
}
}
//активация
elseif($_action == "activate"){
$activate_hash = mysql_escape_string($_REQUEST["activate_hash"]);
if($dbl->sql_numrows($dbl->sql_query("SELECT * FROM accounts_temp WHERE reg_hash='".$activate_hash."' LIMIT 1")) == 0) $lineage .= "<center>Аккаунт не найден!</center>";
else{
$query = $dbl->sql_query("SELECT * FROM accounts_temp WHERE reg_hash='".$activate_hash."' LIMIT 1");
print check_mysql($dbl, __FILE__, __LINE__);
$account_array = $dbl->sql_fetchrow($query);
$dbl->sql_query("INSERT INTO `accounts` (login, password, access_level, email, question, answer) VALUES ('".$account_array['login']."', '".$account_array['password']."', 0, '".$account_array['email']."', '".$account_array['question']."', '".$account_array['answer']."')");
print check_mysql($dbl, __FILE__, __LINE__);
$dbl->sql_query("DELETE FROM `accounts_temp` WHERE reg_hash='".$activate_hash."' LIMIT 1");
print check_mysql($dbl, __FILE__, __LINE__);
$sql_error = $dbl->sql_error();
if ($sql_error["code"]==0) {
$lineage = "<center>Поздравляем, аккаунт успешно активирован! Приятной игры.</center><br />";
$lineage .= "<center><a href='".GetURL($_link,"account")."'>на страницу авторизации</a></center>";
InsertLogRecord($account_array['login'], 'account activation');
}
else {
$lineage = "<div class='warning center'>Неизвестная ошибка, попробуйте еще раз!</div><br />";
$lineage .= "<center><a href='".GetURL($_link,"registration")."'>назад</a></center>";
}
unset($account_array);
}
}
// вывод рег формы
else{
$kcaptcha_str1 = session_name();
$kcaptcha_str2 = session_id();
$tpl->load_template($tpldir.'/lineage/register.tpl');
$tpl->set('{kcaptcha1}', $kcaptcha_str1);
$tpl->set('{kcaptcha2}', $kcaptcha_str2);
$tpl->compile('register');
$lineage = $tpl->result["register"];
}
?>
скрыть