Мануал:делаем Модули Для Dle
5 replies1,930 viewsCurrently viewing: 1
· 03/06/2008, 06:22 PM
И так я решил написать мануал,здесь я научю вас писать модули для Dle
Я проктиковался на Dle 6.5 Null !
И так начнем:
1)Истанавливаем сам Dle.
2)Теперь открываем фаил index.php
Находим строчку
Код
echo $tpl->result['main'];
заминяем ее на
eval (' ?' . '>' . $tpl->result['main'] . '<' . '?php ');
заминяем ее на
eval (' ?' . '>' . $tpl->result['main'] . '<' . '?php ');
Теперь наш Dle поддерживает все php команды в шаблоне
3)Начинаем писать сам модуль
Создадим фаил test.php
В него вставляем:
Код
<?php
$test = 'Ваш текст';
// Подгружаем шаблон
$tpl->load_template('test.tpl');
$tpl->set('{test}', $test);
$tpl->compile('content');
$tpl->clear();
?>
$test = 'Ваш текст';
// Подгружаем шаблон
$tpl->load_template('test.tpl');
$tpl->set('{test}', $test);
$tpl->compile('content');
$tpl->clear();
?>
Опишу обозначения:
$tpl->load_template('test.tpl'); <-- эта строчка отвечает за tpl шаблон нашего модуля
$tpl->set('{test}', $test); <-- эта строчка практически главная,мы преврашяем переменную $test в перемменую {test} она отвечает за вставку в наш шаблон
В этих строчках везде где написсано test на имя вашего модуля
Далее кладем его сюда engine\modules
4)Теперь создаем tpl шаблон
Напоминаю что наш шаблон должен называться так же как и модуль
В наш шаблон вставляем следующее
Код
<html>
<body>
{test}
</body>
</html>
<body>
{test}
</body>
</html>
Шаблон готов ! но это еще не все
5)Теперь создаем то что нужно нам увидеть на нашем сайте
Я в пример возьму свой скрипт регистрации
Создаем фаил reg.php в корне Webserver`a
В него вставляет
Код
<?php
$L2JBS_config["mysql_host"]="localhost"; // IP адрес MySQL-сервера ["localhost"]
$L2JBS_config["mysql_port"]="3306"; // Порт ["3306"]
$L2JBS_config["mysql_db"]="l2jdb"; // Имя игровой базы ["l2jdb"]
$L2JBS_config["mysql_login"]="root"; // Логин ["root"]
$L2JBS_config["mysql_password"]="root"; // Пароль ["root"]
$reg="false"; //простая регистрация- "false" с эмейлом-"true"
$L2JBS_config["mail_enable"]=false;
$link = @mysql_connect($L2JBS_config['mysql_host'].":".$L2JBS_config['mysql_port'], $L2JBS_config['mysql_login'], $L2JBS_config['mysql_password']) or die ('Невозможно создать соеденение с базой ! Проверьте данные необходимые для соеденения с базой MySQL !<br>Impossible create connect with the base! Check given required for connect with base MySQL!<br><br>Возможно сервер сейчас на профилактике, попробуйте зайти позже.<br>Possible server on preventive maintenance presently, try to call at later.');
@mysql_select_db($L2JBS_config['mysql_db'], $link) or die ('Найти базу с таким именем не удалось!');
?>
<Br><Br>
<FONT face=verdana color=black size=2>
Аккаунт и пароль не могут быть пустыми.<BR>
Аккаунт и пароль не могут содержать менее 4 знаков
и больее 20 знаков.<BR>
Аккаунт и пароль пишутся латинскими буквами или цифрами.<BR>
Указывайте реальный @mail адресс!<BR>
Сохраняйте свои регастрационые данные !<BR>
Если ваш пароль взломают,только секретные вопросы помогут вам !<br>
</FONT>
<Br><Br>
<script type="text/javascript">//<![CDATA[
function isAlphaNumeric(value)
{
if (value.match(/^[a-zA-Z0-9_]+$/))
return true;
return false;
}
function checkform(f)
{
if (f.account.value=="")
{
alert("Введите аккаунт");
return false;
}
if (!isAlphaNumeric(f.account.value))
{
alert("Аккаунт должен состоять из английских букв и/или цифр!");
return false;
}
if (f.password.value=="")
{
alert("Введите пароль");
return false;
}
if (!isAlphaNumeric(f.password.value))
{
alert("Пароль должен состоять из английских букв и/или цифр!");
return false;
}
if (f.password2.value=="")
{
alert("Введите пароль повторно");
return false;
}
if (f.password.value != f.password2.value)
{
alert("Пароль и повтор пароля не совпадают!");
return false;
}
if (f.email.value=="")
{
alert("Введите E-mail");
return false;
}
if (!f.email.value.match(/^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]+)+/))
{
alert("Это не e-mail!");
return false;
}
if (f.question1.value=="")
{
alert("Введите Секретный вопрос №1");
return false;
}
if (f.answer1.value=="")
{
alert("Введите Секретный ответ №1");
return false;
}
if (f.question2.value=="")
{
alert("Введите Секретный вопрос №2");
return false;
}
if(f.answer2.value=="")
{
alert("Введите Секретный ответ №2");
return false;
}
return true;
}
//]]></script>
</head>
<body>
<form method="post" action="index.php?do=reg_apocal" onsubmit="return checkform(this)">
<table>
<?php
$input[]=Array("text" , "account" , 20);
$input[]=Array("password", "password" , 20);
$input[]=Array("password", "password2", 20);
$input[]=Array("text" , "email" , 40);
$input[]=Array("text" , "question1", 40);
$input[]=Array("text" , "answer1" , 40);
$input[]=Array("text" , "question2", 40);
$input[]=Array("text" , "answer2" , 40);
for ($i=0; $i<count($input); $i++)
{
$Lang["accounts_account"]="<FONT face=verdana color=white size=2>Аккаунт</FONT>";
$Lang["accounts_email"]="<FONT face=verdana color=white size=2>E-mail</FONT>";
$Lang["accounts_password"]="<FONT face=verdana color=white size=2>Пароль</FONT>";
$Lang["accounts_password2"]="<FONT face=verdana color=white size=2>Повторите пароль</FONT>";
$Lang["accounts_question1"]="<FONT face=verdana color=white size=2>Секретный вопрос №1</FONT>";
$Lang["accounts_question2"]="<FONT face=verdana color=white size=2>Секретный вопрос №2</FONT>";
$Lang["accounts_answer1"]="<FONT face=verdana color=white size=2>Секретный ответ №1</FONT>";
$Lang["accounts_answer2"]="<FONT face=verdana color=white size=2>Секретный ответ №2</FONT>";
$Lang["accounts_accountnotalphanumeric"]="Аккаунт должен состоять из английских букв и/или цифр!";
$Lang["error_error"]='Ошибка: ';
$Lang["accounts_passwordnotalphanumeric"]="Пароль должен состоять из английских букв и/или цифр!";
$Lang["accounts_notemail"]="Это не e-mail!";
$Lang["accounts_registered"]="Аккаунт успешно зарегистрирован !<br><br>Обязательно запомните эти данные.<br><br></b>";
$Lang["accounts_email_error"]="Ошибка при отправке e-mail'а";
$Lang["accounts_alreadyexist"]="Такой аккаунт уже существует";
print '<tr>
<td>'.$Lang["accounts_".$input[$i][1]].'</td>
<td><input type="'.$input[$i][0].'" name="'.$input[$i][1].'" maxlength="'.$input[$i][2].'" value="'.@$_POST[$input[$i][1]].'" /></td>
</tr>
';
}
?>
<tr>
<td colspan="2" style="text-align: center;"><br /><input type="submit" value="Зарегистрироваться" /></td>
</tr>
</table>
</form>
<?php
if ($page="index.php" && $_POST['account'] && strlen($_POST['account'])<=20 && $_POST['password'] && $_POST['password2'] && $_POST['password']==$_POST['password2'] && $_POST['email'] && strlen($_POST['email'])<=20 && $_POST['question1'] && strlen($_POST['question1']<=40) && $_POST['question2'] && strlen($_POST['question2']<=40) && $_POST['answer1'] && strlen($_POST['answer1']<=40) && $_POST['answer2'] && strlen($_POST['answer2']<=40))
{
// anti-injection
if (!eregi("^[a-zA-Z0-9_]+$", $_POST['account']))
die ("<p class=\"error\">" . $Lang["error_error"] . $Lang["accounts_accountnotalphanumeric"] . "</p>");
if (!eregi("^[a-zA-Z0-9_]+$", $_POST['password']))
die ("<p class=\"error\">" . $Lang["error_error"] . $Lang["accounts_passwordnotalphanumeric"] . "</p>");
if (!eregi("^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]+)+", $_POST['email']))
die ("<p class=\"error\">" . $Lang["error_error"] . $Lang["accounts_notemail"] . "</p>");
$banwords=Array("'", "\"", ",", ";", "--", "#");
$_POST['question1']=str_replace($banwords, '', $_POST['question1']);
$_POST['question2']=str_replace($banwords, '', $_POST['question2']);
$_POST['answer1']=str_replace($banwords, '', $_POST['answer1']);
$_POST['answer2']=str_replace($banwords, '', $_POST['answer2']);
// end anti-injection
mysql_query("INSERT INTO accounts (login, password, lastactive, access_level, lastIP, email, question1, answer1, question2, answer2) VALUES ('".$_POST['account']."', '". base64_encode(pack('H*', sha1(utf8_encode($_POST['password'])))) ."', 0, 0, NULL, '".$_POST['email']."', '".$_POST['question1']."', '".$_POST['answer1']."', '".$_POST['question2']."', '".$_POST['answer2']."')", $link);
switch (mysql_errno())
{
case 0:
$msg1 = "<table border=\"0\">\n<tr colspan=\"2\"><td class=\"error\">" .$Lang["accounts_registered"]. "</td></tr>\n<tr><td>" .$Lang["accounts_account"]. "</td><td>" .$_POST['account']. "</td></tr>\n";
$msg3 = "<tr><td>" .$Lang["accounts_email"]. "</td><td>" .$_POST['email']. "</td></tr>\n<tr><td>" .$Lang["accounts_question1"]. "</td><td>" .$_POST['question1']. "</td></tr>\n<tr><td>" .$Lang["accounts_answer1"]. "</td><td>" .$_POST['answer1']. "</td></tr>\n<tr><td>" .$Lang["accounts_question2"]. "</td><td>" .$_POST['question2']. "</td></tr>\n<tr><td>" .$Lang["accounts_answer2"]. "</td><td>" .$_POST['answer2']. "</td></tr>\n</table>";
print "<br />\n".$msg1.$msg3;
if ($L2JBS_config["mail_enable"])
if (!$ok=mail($_POST['email'], $L2JBS_lang["accounts_email_subject_registered"], $msg1."<tr><td>".$Lang["accounts_password"]."</td><td>".$_POST['password']."</td></tr>\n".$msg3, "Content-type: text/html; charset=UTF-8\r\nFrom: ".$L2JBS_lang["accounts_email_from"]))
print '<p class="error">'.$Lang["accounts_email_error"].'</p>';
break;
case 1054: print '<p class="error">Необходимо изменить таблицу "accounts". See Readme.txt</p>'; break;
case 1062: print '<p class="error">'.$Lang["accounts_alreadyexist"].'</p>'; break;
default: print 'Error '.mysql_errno().': '.mysql_error(); break;
}
}
?>
</body>
</html>
$L2JBS_config["mysql_host"]="localhost"; // IP адрес MySQL-сервера ["localhost"]
$L2JBS_config["mysql_port"]="3306"; // Порт ["3306"]
$L2JBS_config["mysql_db"]="l2jdb"; // Имя игровой базы ["l2jdb"]
$L2JBS_config["mysql_login"]="root"; // Логин ["root"]
$L2JBS_config["mysql_password"]="root"; // Пароль ["root"]
$reg="false"; //простая регистрация- "false" с эмейлом-"true"
$L2JBS_config["mail_enable"]=false;
$link = @mysql_connect($L2JBS_config['mysql_host'].":".$L2JBS_config['mysql_port'], $L2JBS_config['mysql_login'], $L2JBS_config['mysql_password']) or die ('Невозможно создать соеденение с базой ! Проверьте данные необходимые для соеденения с базой MySQL !<br>Impossible create connect with the base! Check given required for connect with base MySQL!<br><br>Возможно сервер сейчас на профилактике, попробуйте зайти позже.<br>Possible server on preventive maintenance presently, try to call at later.');
@mysql_select_db($L2JBS_config['mysql_db'], $link) or die ('Найти базу с таким именем не удалось!');
?>
<Br><Br>
<FONT face=verdana color=black size=2>
Аккаунт и пароль не могут быть пустыми.<BR>
Аккаунт и пароль не могут содержать менее 4 знаков
и больее 20 знаков.<BR>
Аккаунт и пароль пишутся латинскими буквами или цифрами.<BR>
Указывайте реальный @mail адресс!<BR>
Сохраняйте свои регастрационые данные !<BR>
Если ваш пароль взломают,только секретные вопросы помогут вам !<br>
</FONT>
<Br><Br>
<script type="text/javascript">//<![CDATA[
function isAlphaNumeric(value)
{
if (value.match(/^[a-zA-Z0-9_]+$/))
return true;
return false;
}
function checkform(f)
{
if (f.account.value=="")
{
alert("Введите аккаунт");
return false;
}
if (!isAlphaNumeric(f.account.value))
{
alert("Аккаунт должен состоять из английских букв и/или цифр!");
return false;
}
if (f.password.value=="")
{
alert("Введите пароль");
return false;
}
if (!isAlphaNumeric(f.password.value))
{
alert("Пароль должен состоять из английских букв и/или цифр!");
return false;
}
if (f.password2.value=="")
{
alert("Введите пароль повторно");
return false;
}
if (f.password.value != f.password2.value)
{
alert("Пароль и повтор пароля не совпадают!");
return false;
}
if (f.email.value=="")
{
alert("Введите E-mail");
return false;
}
if (!f.email.value.match(/^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]+)+/))
{
alert("Это не e-mail!");
return false;
}
if (f.question1.value=="")
{
alert("Введите Секретный вопрос №1");
return false;
}
if (f.answer1.value=="")
{
alert("Введите Секретный ответ №1");
return false;
}
if (f.question2.value=="")
{
alert("Введите Секретный вопрос №2");
return false;
}
if(f.answer2.value=="")
{
alert("Введите Секретный ответ №2");
return false;
}
return true;
}
//]]></script>
</head>
<body>
<form method="post" action="index.php?do=reg_apocal" onsubmit="return checkform(this)">
<table>
<?php
$input[]=Array("text" , "account" , 20);
$input[]=Array("password", "password" , 20);
$input[]=Array("password", "password2", 20);
$input[]=Array("text" , "email" , 40);
$input[]=Array("text" , "question1", 40);
$input[]=Array("text" , "answer1" , 40);
$input[]=Array("text" , "question2", 40);
$input[]=Array("text" , "answer2" , 40);
for ($i=0; $i<count($input); $i++)
{
$Lang["accounts_account"]="<FONT face=verdana color=white size=2>Аккаунт</FONT>";
$Lang["accounts_email"]="<FONT face=verdana color=white size=2>E-mail</FONT>";
$Lang["accounts_password"]="<FONT face=verdana color=white size=2>Пароль</FONT>";
$Lang["accounts_password2"]="<FONT face=verdana color=white size=2>Повторите пароль</FONT>";
$Lang["accounts_question1"]="<FONT face=verdana color=white size=2>Секретный вопрос №1</FONT>";
$Lang["accounts_question2"]="<FONT face=verdana color=white size=2>Секретный вопрос №2</FONT>";
$Lang["accounts_answer1"]="<FONT face=verdana color=white size=2>Секретный ответ №1</FONT>";
$Lang["accounts_answer2"]="<FONT face=verdana color=white size=2>Секретный ответ №2</FONT>";
$Lang["accounts_accountnotalphanumeric"]="Аккаунт должен состоять из английских букв и/или цифр!";
$Lang["error_error"]='Ошибка: ';
$Lang["accounts_passwordnotalphanumeric"]="Пароль должен состоять из английских букв и/или цифр!";
$Lang["accounts_notemail"]="Это не e-mail!";
$Lang["accounts_registered"]="Аккаунт успешно зарегистрирован !<br><br>Обязательно запомните эти данные.<br><br></b>";
$Lang["accounts_email_error"]="Ошибка при отправке e-mail'а";
$Lang["accounts_alreadyexist"]="Такой аккаунт уже существует";
print '<tr>
<td>'.$Lang["accounts_".$input[$i][1]].'</td>
<td><input type="'.$input[$i][0].'" name="'.$input[$i][1].'" maxlength="'.$input[$i][2].'" value="'.@$_POST[$input[$i][1]].'" /></td>
</tr>
';
}
?>
<tr>
<td colspan="2" style="text-align: center;"><br /><input type="submit" value="Зарегистрироваться" /></td>
</tr>
</table>
</form>
<?php
if ($page="index.php" && $_POST['account'] && strlen($_POST['account'])<=20 && $_POST['password'] && $_POST['password2'] && $_POST['password']==$_POST['password2'] && $_POST['email'] && strlen($_POST['email'])<=20 && $_POST['question1'] && strlen($_POST['question1']<=40) && $_POST['question2'] && strlen($_POST['question2']<=40) && $_POST['answer1'] && strlen($_POST['answer1']<=40) && $_POST['answer2'] && strlen($_POST['answer2']<=40))
{
// anti-injection
if (!eregi("^[a-zA-Z0-9_]+$", $_POST['account']))
die ("<p class=\"error\">" . $Lang["error_error"] . $Lang["accounts_accountnotalphanumeric"] . "</p>");
if (!eregi("^[a-zA-Z0-9_]+$", $_POST['password']))
die ("<p class=\"error\">" . $Lang["error_error"] . $Lang["accounts_passwordnotalphanumeric"] . "</p>");
if (!eregi("^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]+)+", $_POST['email']))
die ("<p class=\"error\">" . $Lang["error_error"] . $Lang["accounts_notemail"] . "</p>");
$banwords=Array("'", "\"", ",", ";", "--", "#");
$_POST['question1']=str_replace($banwords, '', $_POST['question1']);
$_POST['question2']=str_replace($banwords, '', $_POST['question2']);
$_POST['answer1']=str_replace($banwords, '', $_POST['answer1']);
$_POST['answer2']=str_replace($banwords, '', $_POST['answer2']);
// end anti-injection
mysql_query("INSERT INTO accounts (login, password, lastactive, access_level, lastIP, email, question1, answer1, question2, answer2) VALUES ('".$_POST['account']."', '". base64_encode(pack('H*', sha1(utf8_encode($_POST['password'])))) ."', 0, 0, NULL, '".$_POST['email']."', '".$_POST['question1']."', '".$_POST['answer1']."', '".$_POST['question2']."', '".$_POST['answer2']."')", $link);
switch (mysql_errno())
{
case 0:
$msg1 = "<table border=\"0\">\n<tr colspan=\"2\"><td class=\"error\">" .$Lang["accounts_registered"]. "</td></tr>\n<tr><td>" .$Lang["accounts_account"]. "</td><td>" .$_POST['account']. "</td></tr>\n";
$msg3 = "<tr><td>" .$Lang["accounts_email"]. "</td><td>" .$_POST['email']. "</td></tr>\n<tr><td>" .$Lang["accounts_question1"]. "</td><td>" .$_POST['question1']. "</td></tr>\n<tr><td>" .$Lang["accounts_answer1"]. "</td><td>" .$_POST['answer1']. "</td></tr>\n<tr><td>" .$Lang["accounts_question2"]. "</td><td>" .$_POST['question2']. "</td></tr>\n<tr><td>" .$Lang["accounts_answer2"]. "</td><td>" .$_POST['answer2']. "</td></tr>\n</table>";
print "<br />\n".$msg1.$msg3;
if ($L2JBS_config["mail_enable"])
if (!$ok=mail($_POST['email'], $L2JBS_lang["accounts_email_subject_registered"], $msg1."<tr><td>".$Lang["accounts_password"]."</td><td>".$_POST['password']."</td></tr>\n".$msg3, "Content-type: text/html; charset=UTF-8\r\nFrom: ".$L2JBS_lang["accounts_email_from"]))
print '<p class="error">'.$Lang["accounts_email_error"].'</p>';
break;
case 1054: print '<p class="error">Необходимо изменить таблицу "accounts". See Readme.txt</p>'; break;
case 1062: print '<p class="error">'.$Lang["accounts_alreadyexist"].'</p>'; break;
default: print 'Error '.mysql_errno().': '.mysql_error(); break;
}
}
?>
</body>
</html>
Сохраняем.
6)Теперь возращяемся к нашему шаблону
У нас есть следуюшие
Код
<html>
<body>
{reg}
</body>
</html>
<body>
{reg}
</body>
</html>
Вставляем <?php include("reg.php");?>
Проверяем должно получиться вот это
Код
<html>
<body>
{reg_apocal}
<?php include("reg.php");?>
</body>
</html>
<body>
{reg_apocal}
<?php include("reg.php");?>
</body>
</html>
7)Так теперь
Добавляем наш модуль в Dle
Открываем фаил engine.php ое находиться тут engine\
Находим
Код
case "register" :
include ENGINE_DIR.'/modules/register.php';
break;
include ENGINE_DIR.'/modules/register.php';
break;
Ниже добавляем
Код
case "test" :
include ENGINE_DIR.'/modules/test.php';
break;
include ENGINE_DIR.'/modules/test.php';
break;
Если вы сделали все правиль как я и написал то при заходе по ссылке http://your_site.ru/index.php?do= test вы увидите регистрацию
Урок закончен !
Администрация прошу прикрепить тему т.к она действительно хорошая
P.s писал я !
Спасибки незабываем
0
· 03/07/2008, 11:03 AM
Вот все готовые скрипты которые использовались в уроке
_http://dump.ru/files/o/o9286810854/
0
· 03/07/2008, 01:45 PM
Вот тебе скрипт регистрации я его поправил,т.к мой чуть отличаеться он для l2rebellion
Код
<?php
$L2JBS_config["mysql_host"]="localhost"; // IP адрес MySQL-сервера ["localhost"]
$L2JBS_config["mysql_port"]="3306"; // Порт ["3306"]
$L2JBS_config["mysql_db"]="l2jdb"; // Имя игровой базы ["l2jdb"]
$L2JBS_config["mysql_login"]="root"; // Логин ["root"]
$L2JBS_config["mysql_password"]="root"; // Пароль ["root"]
$reg="false"; //простая регистрация- "false" с эмейлом-"true"
$L2JBS_config["mail_enable"]=false;
$link = @mysql_connect($L2JBS_config['mysql_host'].":".$L2JBS_config['mysql_port'], $L2JBS_config['mysql_login'], $L2JBS_config['mysql_password']) or die ('Невозможно создать соеденение с базой ! Проверьте данные необходимые для соеденения с базой MySQL !<br>Impossible create connect with the base! Check given required for connect with base MySQL!<br><br>Возможно сервер сейчас на профилактике, попробуйте зайти позже.<br>Possible server on preventive maintenance presently, try to call at later.');
@mysql_select_db($L2JBS_config['mysql_db'], $link) or die ('Найти базу с таким именем не удалось!');
?>
<br><BR><ul>
<LI> Аккаунт и пароль не могут быть пустыми.<BR>
<LI> Аккаунт и пароль не могут содержать менее 4 знаков
и больее 20 знаков.<BR>
<LI>Аккаунт и пароль пишутся латинскими буквами или цифрами.<BR>
<BR><BR>
</ul>
<script type="text/javascript">//<![CDATA[
function isAlphaNumeric(value)
{
if (value.match(/^[a-zA-Z0-9_]+$/))
return true;
return false;
}
function checkform(f)
{
if (f.account.value=="")
{
alert("Введите аккаунт");
return false;
}
if (!isAlphaNumeric(f.account.value))
{
alert("Аккаунт должен состоять из английских букв и/или цифр!");
return false;
}
if (f.password.value=="")
{
alert("Введите пароль");
return false;
}
if (!isAlphaNumeric(f.password.value))
{
alert("Пароль должен состоять из английских букв и/или цифр!");
return false;
}
if (f.password2.value=="")
{
alert("Введите пароль повторно");
return false;
}
if (f.password.value != f.password2.value)
{
alert("Пароль и повтор пароля не совпадают!");
return false;
}
if (f.email.value=="")
{
alert("Введите E-mail");
return false;
}
if (!f.email.value.match(/^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]+)+/))
{
alert("Это не e-mail!");
return false;
}
if (f.question1.value=="")
{
alert("Введите Секретный вопрос №1");
return false;
}
if (f.answer1.value=="")
{
alert("Введите Секретный ответ №1");
return false;
}
if (f.question2.value=="")
{
alert("Введите Секретный вопрос №2");
return false;
}
if(f.answer2.value=="")
{
alert("Введите Секретный ответ №2");
return false;
}
return true;
}
//]]></script>
</head>
<body>
<form method="post" action="index.php?do=reg_true" onsubmit="return checkform(this)">
<table>
<?php
$input[]=Array("text" , "account" , 20);
$input[]=Array("password", "password" , 20);
$input[]=Array("password", "password2", 20);
$input[]=Array("text" , "email" , 40);
$input[]=Array("text" , "question1", 40);
$input[]=Array("text" , "answer1" , 40);
$input[]=Array("text" , "question2", 40);
$input[]=Array("text" , "answer2" , 40);
for ($i=0; $i<count($input); $i++)
{
$Lang["accounts_account"]="Аккаунт";
$Lang["accounts_email"]="E-mail";
$Lang["accounts_password"]="Пароль";
$Lang["accounts_password2"]="Повторите пароль";
$Lang["accounts_question1"]="Секретный вопрос №1";
$Lang["accounts_question2"]="Секретный вопрос №2";
$Lang["accounts_answer1"]="Секретный ответ №1";
$Lang["accounts_answer2"]="Секретный ответ №2";
$Lang["accounts_accountnotalphanumeric"]="Аккаунт должен состоять из английских букв и/или цифр!";
$Lang["error_error"]='Ошибка: ';
$Lang["accounts_passwordnotalphanumeric"]="Пароль должен состоять из английских букв и/или цифр!";
$Lang["accounts_notemail"]="Это не e-mail!";
$Lang["accounts_registered"]="<b>Аккаунт успешно зарегистрирован !<br><br>Обязательно запомните эти данные.<br><br></b>";
$Lang["accounts_email_error"]="Ошибка при отправке e-mail'а";
$Lang["accounts_alreadyexist"]="Такой аккаунт уже существует";
print '<tr>
<td>'.$Lang["accounts_".$input[$i][1]].'</td>
<td><input type="'.$input[$i][0].'" name="'.$input[$i][1].'" maxlength="'.$input[$i][2].'" value="'.@$_POST[$input[$i][1]].'" /></td>
</tr>
';
}
?>
<tr>
<td colspan="2" style="text-align: center;"><br /><input type="submit" value="Зарегистрироваться" /></td>
</tr>
</table>
</form>
<?php
if ($page="index.php" && $_POST['account'] && strlen($_POST['account'])<=20 && $_POST['password'] && $_POST['password2'] && $_POST['password']==$_POST['password2'] && $_POST['email'] && strlen($_POST['email'])<=20 && $_POST['question1'] && strlen($_POST['question1']<=40) && $_POST['question2'] && strlen($_POST['question2']<=40) && $_POST['answer1'] && strlen($_POST['answer1']<=40) && $_POST['answer2'] && strlen($_POST['answer2']<=40))
{
// anti-injection
if (!eregi("^[a-zA-Z0-9_]+$", $_POST['account']))
die ("<p class=\"error\">" . $Lang["error_error"] . $Lang["accounts_accountnotalphanumeric"] . "</p>");
if (!eregi("^[a-zA-Z0-9_]+$", $_POST['password']))
die ("<p class=\"error\">" . $Lang["error_error"] . $Lang["accounts_passwordnotalphanumeric"] . "</p>");
if (!eregi("^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]+)+", $_POST['email']))
die ("<p class=\"error\">" . $Lang["error_error"] . $Lang["accounts_notemail"] . "</p>");
$banwords=Array("'", "\"", ",", ";", "--", "#");
$_POST['question1']=str_replace($banwords, '', $_POST['question1']);
$_POST['question2']=str_replace($banwords, '', $_POST['question2']);
$_POST['answer1']=str_replace($banwords, '', $_POST['answer1']);
$_POST['answer2']=str_replace($banwords, '', $_POST['answer2']);
// end anti-injection
mysql_query("INSERT INTO accounts (login, password, lastactive, access_level, lastIP, email, question1, answer1, question2, answer2) VALUES ('".$_POST['account']."', '". base64_encode(pack('H*', sha1(utf8_encode($_POST['password'])))) ."', NULL, 0, NULL, '".$_POST['email']."', '".$_POST['question1']."', '".$_POST['answer1']."', '".$_POST['question2']."', '".$_POST['answer2']."')", $link);
switch (mysql_errno())
{
case 0:
$msg1 = "<table border=\"0\">\n<tr colspan=\"2\"><td class=\"error\">" .$Lang["accounts_registered"]. "</td></tr>\n<tr><td>" .$Lang["accounts_account"]. "</td><td>" .$_POST['account']. "</td></tr>\n";
$msg3 = "<tr><td>" .$Lang["accounts_email"]. "</td><td>" .$_POST['email']. "</td></tr>\n<tr><td>" .$Lang["accounts_question1"]. "</td><td>" .$_POST['question1']. "</td></tr>\n<tr><td>" .$Lang["accounts_answer1"]. "</td><td>" .$_POST['answer1']. "</td></tr>\n<tr><td>" .$Lang["accounts_question2"]. "</td><td>" .$_POST['question2']. "</td></tr>\n<tr><td>" .$Lang["accounts_answer2"]. "</td><td>" .$_POST['answer2']. "</td></tr>\n</table>";
print "<br />\n".$msg1.$msg3;
if ($L2JBS_config["mail_enable"])
if (!$ok=mail($_POST['email'], $L2JBS_lang["accounts_email_subject_registered"], $msg1."<tr><td>".$Lang["accounts_password"]."</td><td>".$_POST['password']."</td></tr>\n".$msg3, "Content-type: text/html; charset=UTF-8\r\nFrom: ".$L2JBS_lang["accounts_email_from"]))
print '<p class="error">'.$Lang["accounts_email_error"].'</p>';
break;
case 1054: print '<p class="error">Необходимо изменить таблицу "accounts". See Readme.txt</p>'; break;
case 1062: print '<p class="error">'.$Lang["accounts_alreadyexist"].'</p>'; break;
default: print 'Error '.mysql_errno().': '.mysql_error(); break;
}
}
?>
</body>
</html>
$L2JBS_config["mysql_host"]="localhost"; // IP адрес MySQL-сервера ["localhost"]
$L2JBS_config["mysql_port"]="3306"; // Порт ["3306"]
$L2JBS_config["mysql_db"]="l2jdb"; // Имя игровой базы ["l2jdb"]
$L2JBS_config["mysql_login"]="root"; // Логин ["root"]
$L2JBS_config["mysql_password"]="root"; // Пароль ["root"]
$reg="false"; //простая регистрация- "false" с эмейлом-"true"
$L2JBS_config["mail_enable"]=false;
$link = @mysql_connect($L2JBS_config['mysql_host'].":".$L2JBS_config['mysql_port'], $L2JBS_config['mysql_login'], $L2JBS_config['mysql_password']) or die ('Невозможно создать соеденение с базой ! Проверьте данные необходимые для соеденения с базой MySQL !<br>Impossible create connect with the base! Check given required for connect with base MySQL!<br><br>Возможно сервер сейчас на профилактике, попробуйте зайти позже.<br>Possible server on preventive maintenance presently, try to call at later.');
@mysql_select_db($L2JBS_config['mysql_db'], $link) or die ('Найти базу с таким именем не удалось!');
?>
<br><BR><ul>
<LI> Аккаунт и пароль не могут быть пустыми.<BR>
<LI> Аккаунт и пароль не могут содержать менее 4 знаков
и больее 20 знаков.<BR>
<LI>Аккаунт и пароль пишутся латинскими буквами или цифрами.<BR>
<BR><BR>
</ul>
<script type="text/javascript">//<![CDATA[
function isAlphaNumeric(value)
{
if (value.match(/^[a-zA-Z0-9_]+$/))
return true;
return false;
}
function checkform(f)
{
if (f.account.value=="")
{
alert("Введите аккаунт");
return false;
}
if (!isAlphaNumeric(f.account.value))
{
alert("Аккаунт должен состоять из английских букв и/или цифр!");
return false;
}
if (f.password.value=="")
{
alert("Введите пароль");
return false;
}
if (!isAlphaNumeric(f.password.value))
{
alert("Пароль должен состоять из английских букв и/или цифр!");
return false;
}
if (f.password2.value=="")
{
alert("Введите пароль повторно");
return false;
}
if (f.password.value != f.password2.value)
{
alert("Пароль и повтор пароля не совпадают!");
return false;
}
if (f.email.value=="")
{
alert("Введите E-mail");
return false;
}
if (!f.email.value.match(/^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]+)+/))
{
alert("Это не e-mail!");
return false;
}
if (f.question1.value=="")
{
alert("Введите Секретный вопрос №1");
return false;
}
if (f.answer1.value=="")
{
alert("Введите Секретный ответ №1");
return false;
}
if (f.question2.value=="")
{
alert("Введите Секретный вопрос №2");
return false;
}
if(f.answer2.value=="")
{
alert("Введите Секретный ответ №2");
return false;
}
return true;
}
//]]></script>
</head>
<body>
<form method="post" action="index.php?do=reg_true" onsubmit="return checkform(this)">
<table>
<?php
$input[]=Array("text" , "account" , 20);
$input[]=Array("password", "password" , 20);
$input[]=Array("password", "password2", 20);
$input[]=Array("text" , "email" , 40);
$input[]=Array("text" , "question1", 40);
$input[]=Array("text" , "answer1" , 40);
$input[]=Array("text" , "question2", 40);
$input[]=Array("text" , "answer2" , 40);
for ($i=0; $i<count($input); $i++)
{
$Lang["accounts_account"]="Аккаунт";
$Lang["accounts_email"]="E-mail";
$Lang["accounts_password"]="Пароль";
$Lang["accounts_password2"]="Повторите пароль";
$Lang["accounts_question1"]="Секретный вопрос №1";
$Lang["accounts_question2"]="Секретный вопрос №2";
$Lang["accounts_answer1"]="Секретный ответ №1";
$Lang["accounts_answer2"]="Секретный ответ №2";
$Lang["accounts_accountnotalphanumeric"]="Аккаунт должен состоять из английских букв и/или цифр!";
$Lang["error_error"]='Ошибка: ';
$Lang["accounts_passwordnotalphanumeric"]="Пароль должен состоять из английских букв и/или цифр!";
$Lang["accounts_notemail"]="Это не e-mail!";
$Lang["accounts_registered"]="<b>Аккаунт успешно зарегистрирован !<br><br>Обязательно запомните эти данные.<br><br></b>";
$Lang["accounts_email_error"]="Ошибка при отправке e-mail'а";
$Lang["accounts_alreadyexist"]="Такой аккаунт уже существует";
print '<tr>
<td>'.$Lang["accounts_".$input[$i][1]].'</td>
<td><input type="'.$input[$i][0].'" name="'.$input[$i][1].'" maxlength="'.$input[$i][2].'" value="'.@$_POST[$input[$i][1]].'" /></td>
</tr>
';
}
?>
<tr>
<td colspan="2" style="text-align: center;"><br /><input type="submit" value="Зарегистрироваться" /></td>
</tr>
</table>
</form>
<?php
if ($page="index.php" && $_POST['account'] && strlen($_POST['account'])<=20 && $_POST['password'] && $_POST['password2'] && $_POST['password']==$_POST['password2'] && $_POST['email'] && strlen($_POST['email'])<=20 && $_POST['question1'] && strlen($_POST['question1']<=40) && $_POST['question2'] && strlen($_POST['question2']<=40) && $_POST['answer1'] && strlen($_POST['answer1']<=40) && $_POST['answer2'] && strlen($_POST['answer2']<=40))
{
// anti-injection
if (!eregi("^[a-zA-Z0-9_]+$", $_POST['account']))
die ("<p class=\"error\">" . $Lang["error_error"] . $Lang["accounts_accountnotalphanumeric"] . "</p>");
if (!eregi("^[a-zA-Z0-9_]+$", $_POST['password']))
die ("<p class=\"error\">" . $Lang["error_error"] . $Lang["accounts_passwordnotalphanumeric"] . "</p>");
if (!eregi("^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]+)+", $_POST['email']))
die ("<p class=\"error\">" . $Lang["error_error"] . $Lang["accounts_notemail"] . "</p>");
$banwords=Array("'", "\"", ",", ";", "--", "#");
$_POST['question1']=str_replace($banwords, '', $_POST['question1']);
$_POST['question2']=str_replace($banwords, '', $_POST['question2']);
$_POST['answer1']=str_replace($banwords, '', $_POST['answer1']);
$_POST['answer2']=str_replace($banwords, '', $_POST['answer2']);
// end anti-injection
mysql_query("INSERT INTO accounts (login, password, lastactive, access_level, lastIP, email, question1, answer1, question2, answer2) VALUES ('".$_POST['account']."', '". base64_encode(pack('H*', sha1(utf8_encode($_POST['password'])))) ."', NULL, 0, NULL, '".$_POST['email']."', '".$_POST['question1']."', '".$_POST['answer1']."', '".$_POST['question2']."', '".$_POST['answer2']."')", $link);
switch (mysql_errno())
{
case 0:
$msg1 = "<table border=\"0\">\n<tr colspan=\"2\"><td class=\"error\">" .$Lang["accounts_registered"]. "</td></tr>\n<tr><td>" .$Lang["accounts_account"]. "</td><td>" .$_POST['account']. "</td></tr>\n";
$msg3 = "<tr><td>" .$Lang["accounts_email"]. "</td><td>" .$_POST['email']. "</td></tr>\n<tr><td>" .$Lang["accounts_question1"]. "</td><td>" .$_POST['question1']. "</td></tr>\n<tr><td>" .$Lang["accounts_answer1"]. "</td><td>" .$_POST['answer1']. "</td></tr>\n<tr><td>" .$Lang["accounts_question2"]. "</td><td>" .$_POST['question2']. "</td></tr>\n<tr><td>" .$Lang["accounts_answer2"]. "</td><td>" .$_POST['answer2']. "</td></tr>\n</table>";
print "<br />\n".$msg1.$msg3;
if ($L2JBS_config["mail_enable"])
if (!$ok=mail($_POST['email'], $L2JBS_lang["accounts_email_subject_registered"], $msg1."<tr><td>".$Lang["accounts_password"]."</td><td>".$_POST['password']."</td></tr>\n".$msg3, "Content-type: text/html; charset=UTF-8\r\nFrom: ".$L2JBS_lang["accounts_email_from"]))
print '<p class="error">'.$Lang["accounts_email_error"].'</p>';
break;
case 1054: print '<p class="error">Необходимо изменить таблицу "accounts". See Readme.txt</p>'; break;
case 1062: print '<p class="error">'.$Lang["accounts_alreadyexist"].'</p>'; break;
default: print 'Error '.mysql_errno().': '.mysql_error(); break;
}
}
?>
</body>
</html>
0
Topic is closed for replies

