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/Web/Мануал:делаем Модули Для Dle
Search

Мануал:делаем Модули Для Dle

5 replies1,930 viewsCurrently viewing: 1
Boec
Boec

User

Бывалый

Posts: 185

На форуме с: 05/22/2007

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

Рейтинг: 0

· 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 ');

Теперь наш Dle поддерживает все php команды в шаблоне

3)Начинаем писать сам модуль
Создадим фаил test.php
В него вставляем:
Код
<?php

   $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>


Шаблон готов ! но это еще не все

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>


Сохраняем.

6)Теперь возращяемся к нашему шаблону
У нас есть следуюшие
Код
<html>
<body>
{reg}
</body>
</html>

Вставляем <?php include("reg.php");?>
Проверяем должно получиться вот это
Код
<html>
<body>
{reg_apocal}
<?php include("reg.php");?>
</body>
</html>


7)Так теперь
Добавляем наш модуль в Dle
Открываем фаил engine.php ое находиться тут engine\
Находим
Код
case "register" :
        include ENGINE_DIR.'/modules/register.php';
        break;


Ниже добавляем

Код
case "test" :
        include ENGINE_DIR.'/modules/test.php';
        break;


Если вы сделали все правиль как я и написал то при заходе по ссылке http://your_site.ru/index.php?do= test вы увидите регистрацию

Урок закончен !

Администрация прошу прикрепить тему т.к она действительно хорошая

P.s писал я !

Спасибки незабываем

0
Boec
Boec

User

Бывалый

Posts: 185

На форуме с: 05/22/2007

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

Рейтинг: 0

· 03/07/2008, 11:03 AM

Вот все готовые скрипты которые использовались в уроке
_http://dump.ru/files/o/o9286810854/

0
Boec
Boec

User

Бывалый

Posts: 185

На форуме с: 05/22/2007

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

Рейтинг: 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>

0
Boec
Boec

User

Бывалый

Posts: 185

На форуме с: 05/22/2007

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

Рейтинг: 0

· 03/24/2008, 11:51 AM

качай =) http://repou.com/soft/web/16-dle-6.5.html

0
Boec
Boec

User

Бывалый

Posts: 185

На форуме с: 05/22/2007

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

Рейтинг: 0

· 04/06/2008, 06:44 PM

http://4dle.ru/

0
Topic is closed for replies