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

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

ruen
Форум/Web обвязка/Регистрация С Проверкой По Email
Поиск

Регистрация С Проверкой По Email

11 ответов200 просмотровСейчас просматривают: 1
2
263

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

Бывалый

Постов: 186

На форуме с: 11.09.2008

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

Рейтинг: 0

· 08.10.2008, 08:19

При регистрации с проверкой email как-то странно вписывается пароль в базу игры, регистрация проходит аккаунт добавляется на сайте и в игре, но пароль не подходит, а если отключить проверку по email то все отлично регистрируется. Пожалуйста помогите. З.ы. обвязка на dle скачаная с вашего сайта.

0
DioNiR90
DioNiR90

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

Бывалый

Постов: 146

На форуме с: 07.06.2007

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

Рейтинг: 0

· 08.10.2008, 12:02

код регистрации в студию :)

0
2
263

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

Бывалый

Постов: 186

На форуме с: 11.09.2008

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

Рейтинг: 0

· 08.10.2008, 13:02

Цитата
<?php
require_once (ENGINE_DIR.'/inc/parse.class.php');

$parse = new ParseFilter();
$parse->safe_mode = true;
$stopregistration = FALSE;

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 (isset($_POST['submit_reg'])) {

$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/la2dbconfig.php'; // подключение файла с параметрами для BD игрового сервера
//Подключаемся к БД сервера и смотрим, зарегистрирован ли пользователь там
if(!$db_g->connect($config_game['login_user'], $config_game['login_pass'], $config_game['login_base'], $config_game['login_host'], 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.'/inc/mail.class.php'; //Подключаем класс для отправки почты
$mail = new gwe_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) 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, skey, signature, favorites, fullname, land, old, logged_ip) VALUES ('$name', '$regpassword', '$email', '$add_time', '$add_time', '".$config['reg_group']."', '$skey', '', '', '$fullname', '$land', '$old', '".$_IP."')");

//РЕГИСТРАЦИЯ пользователя в БД сервера
require_once ENGINE_DIR.'/data/la2dbconfig.php'; // подключение файла с параметрами для BD игрового сервера

//Подключаемся к БД сервера и заносим регистрационные данные в таблицу аккаунтов
if(!$db_g->connect($config_game['login_user'], $config_game['login_pass'], $config_game['login_base'], $config_game['login_host'], 0)) {
msgbox ($lang['reg_err_30'], $lang['reg_err_31']);
} else {
// Делаем запрос
$add_accaunt = "INSERT INTO `accounts`(login,password,lastactive,access_level,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();
}

?>


Предполагаю что ошибка тут:
Цитата
//Подключаемся к БД сервера и заносим регистрационные данные в таблицу аккаунтов
if(!$db_g->connect($config_game['login_user'], $config_game['login_pass'], $config_game['login_base'], $config_game['login_host'], 0)) {
msgbox ($lang['reg_err_30'], $lang['reg_err_31']);
} else {
// Делаем запрос
$add_accaunt = "INSERT INTO `accounts`(login,password,lastactive,access_level,lastIP) VALUES ('$name','$regpassword2','0','0','".$_IP."')";
$db_g->query($add_accaunt);
$db->connect(DBUSER, DBPASS, DBNAME, DBHOST); //Переключаемся на БД Сайта
}
}

}

}

0
2
263

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

Бывалый

Постов: 186

На форуме с: 11.09.2008

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

Рейтинг: 0

· 08.10.2008, 13:54

Помогите плз

0
H
hellEVIL_TEAM

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

Бывалый

Постов: 292

На форуме с: 28.03.2008

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

Рейтинг: 0

· 08.10.2008, 16:48

жесть а не код :) хардкодеры гггг

0
2
263

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

Бывалый

Постов: 186

На форуме с: 11.09.2008

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

Рейтинг: 0

· 08.10.2008, 18:02

Всем юзерам зарегеным через мыло выдает пароль: 2jmj7l5rSw0yVb/vlWAYkK/YBwk= и он различается с паролем в базе сайта

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

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

Ветеран

Постов: 834

На форуме с: 30.05.2007

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

Рейтинг: 0

· 08.10.2008, 18:05

Сайт в интернете или в локальной сети ? и каким способом отправляется почта: PHP Mail или SMTP ?

P.S> Извини, но огород из РНР не осилил, hellEVIL прав, жесть, альтернативы нету ?

WebDeveloper сервера DARKWORLD

0
Руслан
Руслан

Модератор

Ветеран

Постов: 1201

На форуме с: 14.12.2007

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

Рейтинг: 0

· 08.10.2008, 18:42

kosar: Помогите плз


Может тебе другой скрипт дать?
Зачем вся эта чушь при регистрации, ты бы еще рост и вес спросил swoon.gif

На Форуме я тоже Radar!
Я везде Radar!

0
2
263

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

Бывалый

Постов: 186

На форуме с: 11.09.2008

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

Рейтинг: 0

· 08.10.2008, 19:03

Чушь для того чтоб люди не регили кучу акков и играли одним (
Сайт в инете отправляется SMTP

0
DioNiR90
DioNiR90

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

Бывалый

Постов: 146

На форуме с: 07.06.2007

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

Рейтинг: 0

· 08.10.2008, 22:59

Кто этот код программировал надо руки оторвать. Или наср*ть в них.
Потому что это не код.

kosar: Чушь для того чтоб люди не регили кучу акков и играли одним (
Сайт в инете отправляется SMTP

И что? меня например на la2world.ru где 1 мыло 1 акк не остановило сделать себе 16 акков и играть за них.
Поэтому смысла нет от проверки, если надо они зделают хоть 100 акков. На том же mail.ru я разераю себе 100 мыло. а раньше гдето прога была по реганью этих мыл.

0
2
263

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

Бывалый

Постов: 186

На форуме с: 11.09.2008

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

Рейтинг: 0

· 09.10.2008, 07:24

карочь все ясно, спасибо за помощь...

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