Перейти к содержанию
Авторизация  
Specif

Сбор телефонных номеров, Stress Web 13.

Рекомендуемые сообщения

Всем доброго времени суток, хочу поделиться с вами сбором номеров с вашего сайта на CMS Stress Web 13 без каких либо дополнительный скриптов, все делается просто на базовом функционале обвязки.

Надеюсь его будут использовать лишь для ознакомительный целей, не в коем случае не для спама.

 

Прошу прощения если тема создал не в том разделе (Другие не доступны).

 

Что нам понадобиться?

  1. Stress Web 13 (Null, лицензионный, без разницы).
  2. Руки, монитор, клавиатура, мышь.

Для начала вам нужно скопировать данный php файл register.php в каталог application тем самым заменить старый:

 

 

 

/**
* STRESS WEB
* @author S.T.R.E.S.S.
* @copyright 2008 - 2012 STRESS WEB
* @version 13
* @web http://stressweb.ru
*/
if ( !defined("STRESSWEB") )
die( "Access denied..." );

if ( !$l2cfg["reg_enable"] ) {
$tpl->SetResult( "content", "{$lang["reg_err_0"]}" );
} else {
$_do = ( isset($_REQUEST["do"]) and $_REQUEST["do"] == "activate" and $l2cfg["reg_activate"] ) ? "activate":"reg";

/**************************
* Account Activation
**************************/
if ( $_do == "activate" and $l2cfg["reg_activate"] ) {
$hash = ( isset($_REQUEST["hash"]) ) ? urldecode( $_REQUEST["hash"] ):"";
if ( empty($hash) ) {
$_do = 'reg';
} else {
$hash = explode( '|', base64_decode($hash) );
if ( count($hash) != 6 or md5($hash[0].$hash[1].$hash[2].$hash[3].$hash[4].$l2cfg['salt']) != $hash[5] ) {
$tpl->SetResult( 'content', "incorrect hash" );
} elseif ( $sid != $hash[3] ) {
$tpl->SetResult( 'content', "incorrect server id" );
} else {
$db->ldb( $lid );

if ( $ldb[$lid]->num_rows($ldb[$lid]->query("SELECT login FROM accounts WHERE login='".$ldb[$lid]->safe($hash[0])."' LIMIT 1")) ) {
$tpl->SetResult( "content", "Аккаунт уже существует" );
} else {
$ldb[$lid]->SuperQuery( $qList[$vls]["insAccount"], array("login" => $hash[0], "pass" => $controller->PassEncode($hash[1], $l2cfg["ls"][$lid]["encode"]), "l2email" => $hash[2], "phone" => $hash[3]) );
if ( $ldb[$lid]->affected() > 0 ) {
$tpl->SetResult( "content", "{$lang["validate_err_1"]}" );
$db->gdb( $sid );
$ref_query = $gdb[$sid]->query( "SELECT `account_name`,`{$qList[$vList[$l2cfg["gs"][$sid]["version"]]]["fields"]["charID"]}` AS charID FROM `characters` WHERE `char_name`='{$hash[4]}'" );
if ( $gdb[$sid]->num_rows($ref_query) > 0 ) {
$ref_data = $gdb[$sid]->fetch( $ref_query );
$gdb[$sid]->query( "INSERT INTO `stress_referal` SET `account_referer`='".$ldb[$lid]->safe($hash[0])."',`account_name`='{$ref_data['account_name']}',`charId`='{$ref_data['charID']}',`char_name`='{$hash[4]}'" );
if ( $gdb[$sid]->affected() > 0 ) {
$tpl->ShowError( $lang["message"], "Вы участвуете в программе 'Пригласи друга'", false );
} else {
$tpl->ShowError( $lang["message"], "'Пригласи друга': ошибка базы данных" );
}
}
} else {
$tpl->SetResult( "content", "{$lang["err_db"]}" );
}
}
}
}
}

/**************************
* Account Registration
**************************/
if ( $_do == "reg" ) {

if ( isset($_POST["register"]) ) {
$captcha = null;
if ( $l2cfg["captcha"]["reg"] and $l2cfg['captcha']['reg_type'] == 'sw' ) {
$_l2code_post = strtoupper( $db->safe($_POST["l2sec_code"]) );
$_l2code_sess = $controller->sess_get( 'seccode' );
$controller->sess_unset( 'seccode' );
if ( !$_l2code_sess or $_l2code_post != $_l2code_sess ) {
$captcha = true;
}
}
if ( $l2cfg["captcha"]["reg"] and $l2cfg['captcha']['reg_type'] == 'recaptcha' ) {
$challenge = ( isset($_POST['recaptcha_challenge_field']) ) ? $_POST['recaptcha_challenge_field']:null;
$response = ( isset($_POST['recaptcha_response_field']) ) ? $_POST['recaptcha_response_field']:null;
if ( $challenge == null or strlen($challenge) == 0 or $response == null or strlen($response) == 0 ) {
$captcha = true;
} else {
$resp = $controller->reCaptchaResponse( $_SERVER['REMOTE_ADDR'], $challenge, $response, $l2cfg['captcha']['privatekey'] );
if ( $resp['flag'] == 'false' or $resp['msg'] != 'success' ) {
$captcha = true;
}
}
}

$_l2friend = ( isset($_POST['l2friend']) ) ? $db->safe( htmlspecialchars(strip_tags(trim($_POST['l2friend']))) ):false;
$_l2login = $db->safe( htmlspecialchars(strip_tags(trim($_POST["l2account"]))) );
if ( isset($_POST['l2prefix']) )
$_l2login = $db->safe( $_POST['l2prefix'] ).$_l2login;
$_l2pass1 = $db->safe( $_POST["l2password1"] );
$_l2pass2 = $db->safe( $_POST["l2password2"] );
$_l2email = $db->safe( $_POST["l2email"] );
$_phone = $db->safe( $_POST["phone"] );
if ( empty($_l2login) or empty($_l2pass1) or empty($_l2pass2) or empty($_l2email) ) {
$tpl->ShowError( $lang["error"], $lang["reg_err_1"] );
} elseif ( $captcha ) {
$tpl->ShowError( $lang["error"], $lang["err_code"] );
} elseif ( $_l2pass1 != $_l2pass2 ) {
$tpl->ShowError( $lang["error"], $lang["reg_err_2"] );
} elseif ( strlen($_l2login) < 4 or strlen($_l2login) > 14 ) {
$tpl->ShowError( $lang["error"], $lang["reg_err_3_1"] );
} elseif ( strlen($_l2pass1) < 6 or strlen($_l2pass1) > 16 ) {
$tpl->ShowError( $lang["error"], $lang["reg_err_3_2"] );
} elseif ( preg_match("/[\||'|\<|\>|\[|\]|\"|\!|\?|\$|\@|\/|\\\|\&\~\*\{\+]/", $_l2login) ) {
$tpl->ShowError( $lang["error"], $lang["reg_err_4"] );
} elseif ( !filter_var($_l2email, FILTER_VALIDATE_EMAIL) ) {
$tpl->ShowError( $lang["error"], $lang["err_mail"] );
} else {

$db->ldb( $lid );

if ( $ldb[$lid]->num_rows($ldb[$lid]->query("SELECT * FROM accounts WHERE login='{$_l2login}' LIMIT 1")) ) {
$tpl->ShowError( $lang["error"], $lang["reg_err_6"] );
} elseif ( !$l2cfg["reg_multi"] and $ldb[$lid]->num_rows($ldb[$lid]->query("SELECT * FROM accounts WHERE l2email='{$_l2email}' LIMIT 1")) ) {
$tpl->ShowError( $lang["error"], $lang["reg_err_7"] );
} else {
$_login = strtolower( $_l2login );
$_pass = $controller->PassEncode( $ldb[$lid]->safe($_l2pass1), $l2cfg["ls"][$lid]["encode"] );
if ( !$l2cfg["reg_activate"] ) {
$ldb[$lid]->SuperQuery( $qList[$vls]["insAccount"], array("login" => $_login, "pass" => $_pass, "l2email" => $_l2email, "phone" => $_phone) );
if ( $ldb[$lid]->affected() == 1 ) {
$tpl->ShowError( $lang["message"], $lang["reg_err_8"], false );

$tpl->LoadView( "email_register_ok" );
$tpl->Set( 'login', $_login );
$tpl->Set( 'password', $_l2pass1 );
$tpl->Set( 'host', HTTP_HOME_URL );
$tpl->Build( "mail_message" );
$mail_message = $tpl->GetResult( "mail_message" );

$mail = new Email( $l2cfg );
$mail->send( $_l2email, 'Регистрация аккаунта', $mail_message );

$db->gdb( $sid );
$ref_query = $gdb[$sid]->query( "SELECT `account_name`,`{$qList[$vList[$l2cfg["gs"][$sid]["version"]]]["fields"]["charID"]}` AS charID FROM `characters` WHERE `char_name`='{$_l2friend}'" );
if ( $gdb[$sid]->num_rows($ref_query) > 0 ) {
$ref_data = $gdb[$sid]->fetch( $ref_query );
$gdb[$sid]->query( "INSERT INTO `stress_referal` SET `account_referer`='{$_l2login}',`account_name`='{$ref_data['account_name']}',`charId`='{$ref_data['charID']}',`char_name`='{$_l2friend}'" );
if ( $gdb[$sid]->affected() > 0 ) {
$tpl->ShowError( $lang["message"], "Вы участвуете в программе 'Пригласи друга'", false );
} else {
$tpl->ShowError( $lang["message"], "'Пригласи друга': ошибка базы данных" );
}
}
} else
$tpl->ShowError( $lang["error"], $lang["err_db"] );
} else {

$hash = urlencode( base64_encode($_login.'|'.$_l2pass1.'|'.$_l2email.'|'.$sid.'|'.$_l2friend.'|'.md5($_login.$_l2pass1.$_l2email.$sid.$_l2friend.$l2cfg['salt'])) );
$tpl->LoadView( "email_register" );
$tpl->Set( 'login', $_login );
$tpl->Set( 'password', $_l2pass1 );
$tpl->Set( 'host', HTTP_HOME_URL );
$tpl->Set( 'link', HTTP_HOME_URL."/index.php?f=register&do=activate&sid={$sid}&hash={$hash}" );
$tpl->Build( "mail_message" );
$mail_message = $tpl->GetResult( "mail_message" );

$mail = new Email( $l2cfg );
$mail->send( $_l2email, $lang["reg_err_11"], $mail_message );
if ( $mail->send_error ) {
$tpl->ShowError( $lang["error"], $mail->smtp_msg );
} else {
$tpl->ShowError( $lang["message"], $lang["reg_err_9"], false );
}
}
}
}
}
$tpl->LoadView( "register" );
if ( $l2cfg["captcha"]["reg"] and $l2cfg['captcha']['reg_type'] == 'sw' ) {
$tpl->template = '//'.$tpl->template;
$tpl->Block( 'captcha' );
$tpl->Set( 'l2sec_code', "
" );
} else
$tpl->Block( 'captcha', false );
if ( $l2cfg['captcha']['reg'] and $l2cfg['captcha']['reg_type'] == 'recaptcha' ) {
$tpl->Set( 'code', '
 				var RecaptchaOptions = {    				theme : 'white' 				}; 			

 

 

 

Как вы успели заметить (Кто не просто скопировал как балбес, а попытался разобраться мы добавили $_phone = $db->safe( $_POST["phone"] ); )

 

Далее нам понадобиться файл l2j:

Рассмотрим на примере l2jopen.php

	"insAccount" => "
       INSERT INTO `accounts` (`login`,`password`,`access_level`,`l2email`,`phone`) 
       VALUES ('{login}','{pass}','0','{l2email}','{phone}')",

К стандартному insAccount мы добавляем `phone` - Зачем почему думаю не стоит пояснять? 

Можно скопировать и заменить в своем l2j.

 

Далее самое интересное переходим в templates\default находим там наш файл register.tpl открываем его и в удобное для нас место добавляем:

 

<tr>
<td class="tdlp"><span class="tit">Номер телефона: </span><span class="des"><font color="ff0000">укажите номер телефона</font></span>
<div class="lp_fields_cap" id="login_input_cap">
<input style="text-align:left;" type="text" name="phone" maxlength="20" class="input" placeholder="+7(123)4445566">
</div>
</td>
</tr>

Финиш:

 

Не забываем в таблице accounts добавить колонку phone с максимальный размером записи в неё 20.

`phone` varchar(20)

Проверяем регистрацию, если значение не null при указывание номера телефона, то все работает!

 

Что мы получили в итоге?

При регистрации мы не обязываем игрока указывать номер телефона, если он его не укажет мы получим пустое значение null в столбце phone, если игрок указывает номер телефона при регистрации мы его увидим в столбце phone.

В итоге мы получили некую маленькую модификацию в свой стресс веб без вмешательства лишних скриптов.

 

Изменено пользователем Specif
  • Upvote 6

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для любителей стандарта:

 

\templates\default\register.tpl

<tr>
	<td class="tdLeft">Телефон:<br><span class="description">Укажите номер телефона</span></td>
  	<td class="tdRight"><input type="text" name="phone" maxlength="20" class="input"></td>
</tr>
  • Upvote 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Только потом не кричите что вам слили бд и св дырявый.

Не увидел проверки на валидность номера телефона....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Только потом не кричите что вам слили бд и св дырявый.

Не увидел проверки на валидность номера телефона....

штука то хорошая , но 

если бы приходила ещё СМС с кодом подтверждения , и был выбор телефон или эмаил  , вот этобылабы бомбэ ) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

штука то хорошая , но 

если бы приходила ещё СМС с кодом подтверждения , и был выбор телефон или эмаил  , вот этобылабы бомбэ ) 

Типо такого ? http://forummaxi.ru/topic/59242-%D0%B2%D1%8B%D0%B4%D0%B0%D1%87%D0%B0-%D0%B1%D0%BE%D0%BD%D1%83%D1%81%D0%B0-%D0%BF%D0%BE-%D0%BD%D0%BE%D0%BC%D0%B5%D1%80%D1%83-%D1%82%D0%B5%D0%BB%D0%B5%D1%84%D0%BE%D0%BD%D0%B0/

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Только потом не кричите что вам слили бд и св дырявый.

Не увидел проверки на валидность номера телефона....

 

Не кто не заставляет вас брать готовый register.php, вы можете только заменить строку.

Так же где вы увидели угрозу SQL инъекции? Да добавлен пункт, работы бд, но он не как не дает подменить пользователя.

Окей, сделали инъекцию, получили пусть путь к логину и паролю к АЦ Stress Web, а путь? 

 

Что касательно проверки, можно добавить разными путями, если вы её не увидели значит вы что-то понимаете? Так вставьте проверку для себе сами.

 

 

штука то хорошая , но 

если бы приходила ещё СМС с кодом подтверждения , и был выбор телефон или эмаил  , вот этобылабы бомбэ ) 

 

К сожалению это уже отдельный скрипт.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не кто не заставляет вас брать готовый register.php, вы можете только заменить строку.

Так же где вы увидели угрозу SQL инъекции? Да добавлен пункт, работы бд, но он не как не дает подменить пользователя.

Окей, сделали инъекцию, получили пусть путь к логину и паролю к АЦ Stress Web, а путь? 

 

Что касательно проверки, можно добавить разными путями, если вы её не увидели значит вы что-то понимаете? Так вставьте проверку для себе сами.

 

 

Для начала узнай что такое SQL инъекции...

Вы не просто добавили "пункт, работы бд". вы создали уязвимость.

Поясню : вы не проверяете входящие данные в поле телефон.

В это поле я могу засунуть свой запрос, который допустим создает акк с доступом к гмке, ну или просто банально удаляет все аки из таблицы.

 

Я бы пояснил как сделать проверку, не я не ковырялся в св и не знаю как в нем сгенерировать ошибку... ( туго разбираюсь в чужом коде ).

 

Если ты все это сделал, напиши мне в скайп,  попробуем прикрыть дырку.

Изменено пользователем zGrandy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для начала узнай что такое SQL инъекции...

Вы не просто добавили "пункт, работы бд". вы создали уязвимость.

Поясню : вы не проверяете входящие данные в поле телефон.

В это поле я могу засунуть свой запрос, который допустим создает акк с доступом к гмке, ну или просто банально удаляет все аки из таблицы.

 

Я бы пояснил как сделать проверку, не я не ковырялся в св и не знаю как в нем сгенерировать ошибку... ( туго разбираюсь в чужом коде ).

 

Если ты все это сделал, напиши мне в скайп,  попробуем прикрыть дырку.

Я готов предоставить тест, если вы не сделаете SQL инъекцию, как вы будете искать своё оправдание?

"insAccount" => "
       INSERT INTO `accounts` (`login`,`password`,`access_level`,`l2email`,`phone`) 
       VALUES ('{login}','{pass}','0','{l2email}','{phone}')",

Вам приснилось место для инъекции в данном коде?

Измените данный SQL запрос, под место в регистрации. Из вне с access_level 100.

Зы: Давно не видел сборок которые хранят админку в БД к примеру access_level 100, это ловели наверное либо GovnoSoft? :rofl:

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я готов предоставить тест, если вы не сделаете SQL инъекцию, как вы будете искать своё оправдание?

"insAccount" => "
       INSERT INTO `accounts` (`login`,`password`,`access_level`,`l2email`,`phone`) 
       VALUES ('{login}','{pass}','0','{l2email}','{phone}')",

Вам приснилось место для инъекции в данном коде?

Измените данный SQL запрос, под место в регистрации. Из вне с access_level 100.

Зы: Давно не видел сборок которые хранят админку в БД к примеру access_level 100, это ловели наверное либо GovnoSoft? :rofl:

при регистрации вводим номер телефона такой:

0501231223'); DELETE  FROM `accounts` where login!='azazaz';--

попробуй у себя ввести

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

при регистрации вводим номер телефона такой:

0501231223'); DELETE  FROM `accounts` where login!='azazaz';--

попробуй у себя ввести

Null.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Для любителей стандарта:

 

\templates\default\register.tpl

<tr>
	<td class="tdLeft">Телефон:<br><span class="description">Укажите номер телефона</span></td>
  	<td class="tdRight"><input type="text" name="phone" maxlength="20" class="input"></td>
</tr>

а где ссылка на файлик?

Изменено пользователем ExstazI

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Всем доброго времени суток, хочу поделиться с вами сбором номеров с вашего сайта на CMS Stress Web 13 без каких либо дополнительный скриптов, все делается просто на базовом функционале обвязки.

Надеюсь его будут использовать лишь для ознакомительный целей, не в коем случае не для спама.

 

Прошу прощения если тема создал не в том разделе (Другие не доступны).

 

Что нам понадобиться?

  1. Stress Web 13 (Null, лицензионный, без разницы).
  2. Руки, монитор, клавиатура, мышь.

Для начала вам нужно скопировать данный php файл register.php в каталог application тем самым заменить старый:

 

 

 

/**
* STRESS WEB
* @author S.T.R.E.S.S.
* @copyright 2008 - 2012 STRESS WEB
* @version 13
* @web http://stressweb.ru
*/
if ( !defined("STRESSWEB") )
die( "Access denied..." );

if ( !$l2cfg["reg_enable"] ) {
$tpl->SetResult( "content", "{$lang["reg_err_0"]}" );
} else {
$_do = ( isset($_REQUEST["do"]) and $_REQUEST["do"] == "activate" and $l2cfg["reg_activate"] ) ? "activate":"reg";

/**************************
* Account Activation
**************************/
if ( $_do == "activate" and $l2cfg["reg_activate"] ) {
$hash = ( isset($_REQUEST["hash"]) ) ? urldecode( $_REQUEST["hash"] ):"";
if ( empty($hash) ) {
$_do = 'reg';
} else {
$hash = explode( '|', base64_decode($hash) );
if ( count($hash) != 6 or md5($hash[0].$hash[1].$hash[2].$hash[3].$hash[4].$l2cfg['salt']) != $hash[5] ) {
$tpl->SetResult( 'content', "incorrect hash" );
} elseif ( $sid != $hash[3] ) {
$tpl->SetResult( 'content', "incorrect server id" );
} else {
$db->ldb( $lid );

if ( $ldb[$lid]->num_rows($ldb[$lid]->query("SELECT login FROM accounts WHERE login='".$ldb[$lid]->safe($hash[0])."' LIMIT 1")) ) {
$tpl->SetResult( "content", "Аккаунт уже существует" );
} else {
$ldb[$lid]->SuperQuery( $qList[$vls]["insAccount"], array("login" => $hash[0], "pass" => $controller->PassEncode($hash[1], $l2cfg["ls"][$lid]["encode"]), "l2email" => $hash[2], "phone" => $hash[3]) );
if ( $ldb[$lid]->affected() > 0 ) {
$tpl->SetResult( "content", "{$lang["validate_err_1"]}" );
$db->gdb( $sid );
$ref_query = $gdb[$sid]->query( "SELECT `account_name`,`{$qList[$vList[$l2cfg["gs"][$sid]["version"]]]["fields"]["charID"]}` AS charID FROM `characters` WHERE `char_name`='{$hash[4]}'" );
if ( $gdb[$sid]->num_rows($ref_query) > 0 ) {
$ref_data = $gdb[$sid]->fetch( $ref_query );
$gdb[$sid]->query( "INSERT INTO `stress_referal` SET `account_referer`='".$ldb[$lid]->safe($hash[0])."',`account_name`='{$ref_data['account_name']}',`charId`='{$ref_data['charID']}',`char_name`='{$hash[4]}'" );
if ( $gdb[$sid]->affected() > 0 ) {
$tpl->ShowError( $lang["message"], "Вы участвуете в программе 'Пригласи друга'", false );
} else {
$tpl->ShowError( $lang["message"], "'Пригласи друга': ошибка базы данных" );
}
}
} else {
$tpl->SetResult( "content", "{$lang["err_db"]}" );
}
}
}
}
}

/**************************
* Account Registration
**************************/
if ( $_do == "reg" ) {

if ( isset($_POST["register"]) ) {
$captcha = null;
if ( $l2cfg["captcha"]["reg"] and $l2cfg['captcha']['reg_type'] == 'sw' ) {
$_l2code_post = strtoupper( $db->safe($_POST["l2sec_code"]) );
$_l2code_sess = $controller->sess_get( 'seccode' );
$controller->sess_unset( 'seccode' );
if ( !$_l2code_sess or $_l2code_post != $_l2code_sess ) {
$captcha = true;
}
}
if ( $l2cfg["captcha"]["reg"] and $l2cfg['captcha']['reg_type'] == 'recaptcha' ) {
$challenge = ( isset($_POST['recaptcha_challenge_field']) ) ? $_POST['recaptcha_challenge_field']:null;
$response = ( isset($_POST['recaptcha_response_field']) ) ? $_POST['recaptcha_response_field']:null;
if ( $challenge == null or strlen($challenge) == 0 or $response == null or strlen($response) == 0 ) {
$captcha = true;
} else {
$resp = $controller->reCaptchaResponse( $_SERVER['REMOTE_ADDR'], $challenge, $response, $l2cfg['captcha']['privatekey'] );
if ( $resp['flag'] == 'false' or $resp['msg'] != 'success' ) {
$captcha = true;
}
}
}

$_l2friend = ( isset($_POST['l2friend']) ) ? $db->safe( htmlspecialchars(strip_tags(trim($_POST['l2friend']))) ):false;
$_l2login = $db->safe( htmlspecialchars(strip_tags(trim($_POST["l2account"]))) );
if ( isset($_POST['l2prefix']) )
$_l2login = $db->safe( $_POST['l2prefix'] ).$_l2login;
$_l2pass1 = $db->safe( $_POST["l2password1"] );
$_l2pass2 = $db->safe( $_POST["l2password2"] );
$_l2email = $db->safe( $_POST["l2email"] );
$_phone = $db->safe( $_POST["phone"] );
if ( empty($_l2login) or empty($_l2pass1) or empty($_l2pass2) or empty($_l2email) ) {
$tpl->ShowError( $lang["error"], $lang["reg_err_1"] );
} elseif ( $captcha ) {
$tpl->ShowError( $lang["error"], $lang["err_code"] );
} elseif ( $_l2pass1 != $_l2pass2 ) {
$tpl->ShowError( $lang["error"], $lang["reg_err_2"] );
} elseif ( strlen($_l2login) < 4 or strlen($_l2login) > 14 ) {
$tpl->ShowError( $lang["error"], $lang["reg_err_3_1"] );
} elseif ( strlen($_l2pass1) < 6 or strlen($_l2pass1) > 16 ) {
$tpl->ShowError( $lang["error"], $lang["reg_err_3_2"] );
} elseif ( preg_match("/[\||'|\<|\>|\[|\]|\"|\!|\?|\$|\@|\/|\\\|\&\~\*\{\+]/", $_l2login) ) {
$tpl->ShowError( $lang["error"], $lang["reg_err_4"] );
} elseif ( !filter_var($_l2email, FILTER_VALIDATE_EMAIL) ) {
$tpl->ShowError( $lang["error"], $lang["err_mail"] );
} else {

$db->ldb( $lid );

if ( $ldb[$lid]->num_rows($ldb[$lid]->query("SELECT * FROM accounts WHERE login='{$_l2login}' LIMIT 1")) ) {
$tpl->ShowError( $lang["error"], $lang["reg_err_6"] );
} elseif ( !$l2cfg["reg_multi"] and $ldb[$lid]->num_rows($ldb[$lid]->query("SELECT * FROM accounts WHERE l2email='{$_l2email}' LIMIT 1")) ) {
$tpl->ShowError( $lang["error"], $lang["reg_err_7"] );
} else {
$_login = strtolower( $_l2login );
$_pass = $controller->PassEncode( $ldb[$lid]->safe($_l2pass1), $l2cfg["ls"][$lid]["encode"] );
if ( !$l2cfg["reg_activate"] ) {
$ldb[$lid]->SuperQuery( $qList[$vls]["insAccount"], array("login" => $_login, "pass" => $_pass, "l2email" => $_l2email, "phone" => $_phone) );
if ( $ldb[$lid]->affected() == 1 ) {
$tpl->ShowError( $lang["message"], $lang["reg_err_8"], false );

$tpl->LoadView( "email_register_ok" );
$tpl->Set( 'login', $_login );
$tpl->Set( 'password', $_l2pass1 );
$tpl->Set( 'host', HTTP_HOME_URL );
$tpl->Build( "mail_message" );
$mail_message = $tpl->GetResult( "mail_message" );

$mail = new Email( $l2cfg );
$mail->send( $_l2email, 'Регистрация аккаунта', $mail_message );

$db->gdb( $sid );
$ref_query = $gdb[$sid]->query( "SELECT `account_name`,`{$qList[$vList[$l2cfg["gs"][$sid]["version"]]]["fields"]["charID"]}` AS charID FROM `characters` WHERE `char_name`='{$_l2friend}'" );
if ( $gdb[$sid]->num_rows($ref_query) > 0 ) {
$ref_data = $gdb[$sid]->fetch( $ref_query );
$gdb[$sid]->query( "INSERT INTO `stress_referal` SET `account_referer`='{$_l2login}',`account_name`='{$ref_data['account_name']}',`charId`='{$ref_data['charID']}',`char_name`='{$_l2friend}'" );
if ( $gdb[$sid]->affected() > 0 ) {
$tpl->ShowError( $lang["message"], "Вы участвуете в программе 'Пригласи друга'", false );
} else {
$tpl->ShowError( $lang["message"], "'Пригласи друга': ошибка базы данных" );
}
}
} else
$tpl->ShowError( $lang["error"], $lang["err_db"] );
} else {

$hash = urlencode( base64_encode($_login.'|'.$_l2pass1.'|'.$_l2email.'|'.$sid.'|'.$_l2friend.'|'.md5($_login.$_l2pass1.$_l2email.$sid.$_l2friend.$l2cfg['salt'])) );
$tpl->LoadView( "email_register" );
$tpl->Set( 'login', $_login );
$tpl->Set( 'password', $_l2pass1 );
$tpl->Set( 'host', HTTP_HOME_URL );
$tpl->Set( 'link', HTTP_HOME_URL."/index.php?f=register&do=activate&sid={$sid}&hash={$hash}" );
$tpl->Build( "mail_message" );
$mail_message = $tpl->GetResult( "mail_message" );

$mail = new Email( $l2cfg );
$mail->send( $_l2email, $lang["reg_err_11"], $mail_message );
if ( $mail->send_error ) {
$tpl->ShowError( $lang["error"], $mail->smtp_msg );
} else {
$tpl->ShowError( $lang["message"], $lang["reg_err_9"], false );
}
}
}
}
}
$tpl->LoadView( "register" );
if ( $l2cfg["captcha"]["reg"] and $l2cfg['captcha']['reg_type'] == 'sw' ) {
$tpl->template = '//'.$tpl->template;
$tpl->Block( 'captcha' );
$tpl->Set( 'l2sec_code', "
" );
} else
$tpl->Block( 'captcha', false );
if ( $l2cfg['captcha']['reg'] and $l2cfg['captcha']['reg_type'] == 'recaptcha' ) {
$tpl->Set( 'code', '
 				var RecaptchaOptions = {    				theme : 'white' 				}; 			

 

 

 

Как вы успели заметить (Кто не просто скопировал как балбес, а попытался разобраться мы добавили $_phone = $db->safe( $_POST["phone"] ); )

 

Далее нам понадобиться файл l2j:

Рассмотрим на примере l2jopen.php

	"insAccount" => "
       INSERT INTO `accounts` (`login`,`password`,`access_level`,`l2email`,`phone`) 
       VALUES ('{login}','{pass}','0','{l2email}','{phone}')",

К стандартному insAccount мы добавляем `phone` - Зачем почему думаю не стоит пояснять? 

Можно скопировать и заменить в своем l2j.

 

Далее самое интересное переходим в templates\default находим там наш файл register.tpl открываем его и в удобное для нас место добавляем:

 

<tr>
<td class="tdlp"><span class="tit">Номер телефона: </span><span class="des"><font color="ff0000">укажите номер телефона</font></span>
<div class="lp_fields_cap" id="login_input_cap">
<input style="text-align:left;" type="text" name="phone" maxlength="20" class="input" placeholder="+7(123)4445566">
</div>
</td>
</tr>

Финиш:

 

Не забываем в таблице accounts добавить колонку phone с максимальный размером записи в неё 20.

`phone` varchar(20)

Проверяем регистрацию, если значение не null при указывание номера телефона, то все работает!

 

Что мы получили в итоге?

При регистрации мы не обязываем игрока указывать номер телефона, если он его не укажет мы получим пустое значение null в столбце phone, если игрок указывает номер телефона при регистрации мы его увидим в столбце phone.

В итоге мы получили некую маленькую модификацию в свой стресс веб без вмешательства лишних скриптов.

 

 

Всё сделал по мануалу, но в БД сервера в поле с номером телефона, вместо самого номера пишется: {phone}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проблема осталась прежней.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...