Skip to content
La2Base
Home
DownloadsWikiForumFAQ
Search
ruen
Sign up Login
HomeFilesWikiLogin
  • Home
  • Downloads
  • Wiki
  • FAQ
  • Contact Us
  • About
  • Rules
  • Privacy
  • Terms of Service

© 2026 la2base.com · All rights reserved

ruen
Forum/Веб обвязка/Скрипт реферала
Search

Скрипт реферала

4 replies114 viewsCurrently viewing: 1
T
timida
· 11/11/2009, 01:44 AM

Вообщем народ кто шарит, у меня есть скрипт регистрации который есть у всех Hellevil, вот он


registration.php

Раскрывающийся текст
<?php

/********************************************************************/
/* */
/* Lineage2 DLE Module, Copyright © 2007-2009, hellEVIL TEAM */
/* http://www.hellevil.net */
/* */
/********************************************************************/

if(!defined('DATALIFEENGINE')) {
die("Hacking attempt!");
}

$l2login = isset($_REQUEST["l2login"]) ? strtolower($dbl->escape($_REQUEST["l2login"])) : "";
$l2password = isset($_REQUEST["l2password"]) ? getPasswordHash($_REQUEST["l2password"]) : "";
$l2password_tmp = isset($_REQUEST["l2password"]) ? $dbl->escape($_REQUEST["l2password"]) : "";
$l2hash = isset($_REQUEST["l2hash"]) ? strtolower($dbl->escape($_REQUEST["l2hash"])) : "";
$l2email = isset($_REQUEST["l2email"]) ? strtolower($dbl->escape($_REQUEST["l2email"])) : "";

$error_msg = false;
$registered = false;

/*
* Регистрация
*/

if ($_action == "reg") {

if (empty($_REQUEST["l2login"]) || empty($_REQUEST["l2password"]) || empty($_REQUEST["l2password2"]) || empty($_REQUEST["l2email"]) || empty($_REQUEST["l2answer"]) || empty($_REQUEST["l2question"])) {
$error_msg = "Ошибка при регистрации, заполните все поля!";

} elseif ($l2captcha != true) {
$error_msg = "Ошибка при регистрации, код безопасности не соответствует отображённому!";

} elseif (strlen($_REQUEST["l2login"]) > 16 || strlen($_REQUEST["l2login"]) < 4) {
$error_msg = "Ошибка при регистрации, логин должен быть не меньше 4 и не больше 16 символов!";

} elseif ($_REQUEST["l2password"] != $_REQUEST["l2password2"]) {
$error_msg = "Ошибка при регистрации, пароли не совпадают!";

} elseif (strlen($_REQUEST["l2answer"]) < 4 || strlen($_REQUEST["l2question"]) < 4) {
$error_msg = "Ошибка при регистрации, вопрос и ответ должны быть не меньше 4 символов!";

} elseif (!checkEmail($_REQUEST["l2email"])) {
$error_msg = "Ошибка при регистрации, email указан не верно!";

} elseif ($dbl->sql_numrows($dbl->sql_query("SELECT * FROM `accounts` WHERE `login`='{$l2login}' LIMIT 1"))) {
$error_msg = "Ошибка при регистрации, аккаунт существует!";

} elseif ($dbl->sql_numrows($dbl->sql_query("SELECT * FROM `accounts_tmp` WHERE `login_tmp`='{$l2login}' LIMIT 1"))) {
$error_msg = "Ошибка при регистрации, аккаунт существует, но не активирован!";

} elseif ($dbl->sql_numrows($dbl->sql_query("SELECT * FROM `accounts_tmp` WHERE `email`='{$l2email}' LIMIT 1"))) {
$error_msg = "Ошибка при регистрации, указанный email уже используется!";

}

if ($error_msg == false) {

if ($la2config["registration"]["email_check"] == true) {

$l2hash = md5($l2login.$l2email.time());
$dbl->sql_query("INSERT INTO `accounts_tmp` (`login_tmp`, `password_tmp`, `email`, `answer`, `question`, `hash`, `active`) VALUES ('{$l2login}', '{$l2password_tmp}', '{$dbl->escape($_REQUEST["l2email"])}', '{$dbl->escape($_REQUEST["l2answer"])}', '{$dbl->escape($_REQUEST["l2question"])}', '{$l2hash}', '0')");
$l2link = $config['http_home_url']."?do=lineage&module=registration&action=check&l2login={$l2login}&l2hash={$l2hash}";

// Отправка письма
include_once ENGINE_DIR.'/classes/mail.class.php';

$mail = new dle_mail($config);

$message = "Спасибо за регистрацию!\n\n";
$message.= "Для активации аккаунта вы должны пройти по ссылке: {$l2link}\n\n";
$message.= "----------------------------\n";
$message.= "С уважением, Администрация.\n";
$message.= "{$config['http_home_url']}";

$row = $db->super_query("SELECT template FROM " . PREFIX . "_email where name='feed_mail' LIMIT 0,1");

$mail->send ($l2email, "Активация аккаунта", $message);

if ($mail->send_error) $error_msg = "Ошибка при отправке почты ".$mail->smtp_msg;
else $lineage = "<div style='color: red; text-align: center;'><b>Ссылка для активации аккаунта выслана! Проверьте электронную почту!</b></div>";

} else {

$dbl->sql_query("INSERT INTO `accounts_tmp` (`login_tmp`, `email`, `answer`, `question`, `active`) VALUES ('{$l2login}', '{$l2email}', '{$dbl->escape($_REQUEST["l2answer"])}', '{$dbl->escape($_REQUEST["l2question"])}', '1')");
if ($dbl->sql_affectedrows() == 1) {
$dbl->sql_query_jdb("insertAccount", array("login" => $l2login, "password" => $l2password));
if ($dbl->sql_affectedrows() == 1) {
$lineage = "<div style='text-align: center;'><b>Поздравляем, Вы успешно зарегистрировали аккаунт! Приятной игры.</b></div>";
$registered = true;
} else {
$error_msg = "Неизвестная ошибка, попробуйте еще раз!";
}
} else {
$error_msg = "Неизвестная ошибка, попробуйте еще раз!";
}

}
}

}

/*
* Подтверждение электронной почты
*/

if ($la2config["registration"]["email_check"] && $_action == "check") {

$account_data = $dbl->sql_fetchrow($dbl->sql_query("SELECT `password_tmp`, `email`, `hash` FROM `accounts_tmp` WHERE `login_tmp` = '{$l2login}' AND `active` = '0'"));

if (!empty($l2hash) && $dbl->sql_numrows() == 1 && $account_data["hash"] == $l2hash) {

$l2password = getPasswordHash($account_data["password_tmp"]);
$l2password_tmp = $account_data["password_tmp"];
$l2email = $account_data["email"];

$dbl->sql_query("UPDATE `accounts_tmp` SET `password_tmp` = '', `hash` = '', `active` = '1' WHERE `login_tmp`='{$l2login}'");

$dbl->sql_query_jdb("insertAccount", array("login" => $l2login, "password" => $l2password));
if ($dbl->sql_affectedrows() == 1) {
$lineage = "<div style='text-align: center;'><b>Поздравляем, Вы успешно зарегистрировали аккаунт! Приятной игры.</b></div>";
$registered = true;
} else {
$error_msg = "Неизвестная ошибка, попробуйте еще раз!";
}

} else {
$error_msg = "Неверная или устаревшая ссылка на активацию!";
}
}

/*
* Уведомление на email о регистрации
*/

if ($registered == true && $la2config["registration"]["email_success"]) {

include_once ENGINE_DIR.'/classes/mail.class.php';

$mail = new dle_mail($config);

$message = "Спасибо за регистрацию!\n\n";
$message.= "Ваш логин: {$l2login}\n";
if ($la2config["registration"]["email_password"] == true)
$message.= "Ваш пароль: {$l2password_tmp}\n";
$message.= "----------------------------\n";
$message.= "С уважением, Администрация.\n";
$message.= "{$config['http_home_url']}";

$mail->send($l2email, "Благодарим за регистрацию", $message);

if ($mail->send_error) msgbox ("Ошибка при отправке почты", $mail->smtp_msg);

}
else


/*
* Вывод ошибки
*/

if (empty($error_msg) == false) {
$lineage = "
<div style='color: red; text-align: center;'><b>{$error_msg}</b></div>
<br />
<div style='text-align: center;'><a href='{$_link}&module=registration'>назад</a></div>
";
}

/*
* Форма регистрации
*/

if ($_action == "") {

$tpl->load_template($tpldir.'/lineage/register.tpl');
$tpl->set('{url}',$config['http_home_url']);
if ($la2config["captcha"] == true) {
$tpl->set_block("'\\[sec_code\\](.*?)\\[/sec_code\\]'si","\\1");
$tpl->set('{reg_code}',"{$config['http_home_url']}/engine/lineage/captcha/index.php?".session_name()."=".session_id());
} else {
$tpl->set_block("'\\[sec_code\\](.*?)\\[/sec_code\\]'si","");
$tpl->set('{reg_code}',"");
}
$tpl->compile('register');
$lineage = $tpl->result["register"];
$tpl->clear();

}

?>


registr.tpl

Раскрывающийся текст
<center><div class="rg2" style="padding-bottom: 30px;"></div></center>
<script type="text/javascript">//<![CDATA[
function reloadCaptcha () {
var rndval = new Date().getTime();
document.getElementById("l2-captcha").src = "{reg_code}&rndval=" + rndval;
}
function isAlphaNumeric(value) {
if (value.match(/^[a-zA-Z0-9]+$/)) return true; else return false;
}
function checkform(f) {
if (f.l2login.value=="") {
alert("Заполните все поля формы");
return false;
}
if (!isAlphaNumeric(f.l2login.value)) {
alert("Заполните все поля формы");
return false;
}
if (f.l2password.value=="") {
alert("Не введен пароль");
return false;
}
if (!isAlphaNumeric(f.l2password.value)) {
alert("");
return false;
}
if (f.l2password2.value=="") {
alert("Не введен повтор пароля");
return false;
}
if (f.l2password.value!=f.l2password2.value) {
alert("Не совпадает пароль");
return false;
}
return true;
}
//]]></script>

<div id='l2account'>
<ul>
<li>Аккаунт и пароль не могут быть пустыми.</li>
<li>Аккаунт и пароль не могут содержать менее 4 знаков и больее 15 знаков.</li>
<li>Аккаунт и пароль пишутся латинскими буквами или цифрами.</li>
</ul>
</div>

<br>

<form action='?do=lineage&module=registration&action=reg' method='post' onsubmit='return checkform(this)'>
<center>
<table id='l2tbl'>
<tr>
<td class='left'>Логин</td>
<td class='right'><input type='text' name='l2login' maxlength='15' /></td>
</tr>
<tr>
<td class='left'>Пароль</td>
<td class='right'><input type='password' name='l2password' maxlength='15' /></td>
</tr>
<tr>
<td class='left'>Подтверждение пароля</td>
<td class='right'><input type='password' name='l2password2' maxlength='15' /></td>
</tr>
<tr>
<td class='left'>E-mail</td>
<td class='right'><input type='text' name='l2email' maxlength='64' /></td>
</tr>
<tr>
<td class='left'>Секретный вопрос</td>
<td class='right'><input type='text' name='l2question' maxlength='64' /></td>
</tr>
<tr>
<td class='left'>Ответ на секретный вопрос</td>
<td class='right'><input type='text' name='l2answer' maxlength='64' /></td>
</tr>
[sec_code]
<tr>
<td class='left'><img id="l2-captcha" src="{reg_code}" alt="Код безопасности" border="0" /><br />
<a onclick="java script:reloadCaptcha(); return false;" href="#">Обновить код</a>
</td>
<td class='right'>
<input type="text" name="sec_code" onfocus="this.value=''" value="Код безопасности">
</td>
</tr>
[/sec_code]

<tr>
<td colspan='2' style='text-align: center;'><br />
<input type='submit' name='submit' value='Регистрация' /></td>
</tr>
</table>
</center>
</form>


Но у меня есть второй скрипт он от другова двига и т.д

Мне нужно добавить строку "Ник пригласившего" и что бы добавлял в таблицу "z_char_referals"
поля "login" и "referer"

вот пример !

Раскрывающийся текст
// ***Реферал***
if(empty($_POST["refer"]))
$refer_check_complite=true;
else
{
// На всякий случай чистим от левых символов.
$to_add["refer"]=request_replace(trim($_POST["refer"]));
mysql_select_db($engine->config_lineage['server1_mysql_base']);
$mysql_1=mysql_query("SELECT `char_name` FROM `characters` WHERE `char_name`='{$to_add['refer']}'");
mysql_select_db($engine->config_main['mysql_base']);
if($mysql_1)
{
if(mysql_num_rows($mysql_1)==1)
{
$chd = mysql_fetch_row($mysql_1);
$to_add['refer'] = $chd[0];
$refer_check_complite=true;
}
else
$message["refer"]="Такого персонажа не существует.";
}
else
$message["refer"]="Ошибка работы с базой данных1";
}
// ***Ну а теперь добавление***
if($login_check_complite && $pass_check_complite && $question_check_complite && $answer_check_complite && $mail_check_complite && $refer_check_complite)
{
//Первым делом создаем для пользователя интидификатор
$to_add["user_id"]=rand(1,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9).ran
d(0,9).rand(0,9);
//ПолучаеМ ПаРоЛь
$to_add["pass_1"]=base64_encode(pack("H*", sha1(utf8_encode($to_add["pass_1"]))));
//Ip
$to_add["ip"]=request_replace($_SERVER["REMOTE_ADDR"]);
//Дата
$to_add["date"]=date("y.m.d H:i:s");
//Проверяем, как добавлять
if($engine->config_lineage["reg_by_mail"])
reg_add_mail($to_add);
else
reg_add($to_add);
}
else
reg_1($to_add,$message);
}

function reg_add($to_add) {
global $template,$engine;
// $mysql_1=mysql_query("INSERT INTO `accounts`(`login`,`password`,`group`,`lastactive`,`access_level`,`lastIP`) VALUES ('{$to_add["login"]}','{$to_add["pass_1"]}','user','0','0','{$to_add["ip"]}')");
$mysql_2=mysql_query("INSERT INTO `accounts_info` VALUES ('{$to_add["login"]}','','{$to_add["ip"]}','{$to_add["date"]}','{$to_add["pass_1"]}','{$to_add["question"]}','{$to_add["answer"]}','{$to_add["mail"]}','{$to_add["user_id"]}')");
mysql_select_db($engine->config_lineage['login_mysql_base']);
$mysql_3=mysql_query("INSERT INTO `accounts`(`login`,`password`) VALUES ('{$to_add["login"]}','{$to_add["pass_1"]}')");
if (!empty($to_add['refer']))
{ // это лишнее

mysql_select_db($engine->config_lineage['server1_mysql_base']);
$mysql_4=mysql_query("INSERT INTO `z_char_referals`(`login`,`referer`) VALUES ('{$to_add["login"]}','{$to_add['refer']}')");
}
else
$mysql_4 = true;
mysql_select_db($engine->config_main['mysql_base']);
if (!($mysql_1 AND $mysql_2 AND $mysql_3 AND $mysql_4))
{
add_to_ban_ip("site_reg");
$template->page_error("Ошибка работы с базой данных");
return;
}


Конкретно, нужно на регистрацию модуля Hellevil'a (ясно что DLE) добавить строку "Ник пригласившего" потом что бы была проверка ника, если ник есть в таблице аккаунтс, то "login"= аккаунт регистрируемого и "referer"= ник пригласившего добавлялся в таблицу "z_char_referals"

В долгу не останусь несколько ВМЗ накину первому, чье будет работать

0
BmX
BmX

User

Новичок

Posts: 13

На форуме с: 05/25/2008

Рейтинг: 0

· 01/28/2010, 11:15 AM

А самому в скрипт с обычной регой вставить 2 строчки по аналогии слабо ?=)
И в базе данных столбец для этого добавить...

0
M
Mr.San
· 01/28/2010, 11:21 AM

//offtop

Раскрывающийся текст
http://la2base.ru/forum/index.php?showforum=154 . Думаю, поиск по этому разделу тебе очень поможет...

0
agnitium
agnitium

User

Ветеран

Posts: 1298

На форуме с: 03/07/2008

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

Рейтинг: 0

· 01/28/2010, 11:27 AM

А причем тут птс раздел?

— Дизайны на заказ 1236548

0
Войдите или зарегистрируйтесь чтобы ответить