Пример можно посмотреть на http://qfs.quadra.ru
Включается/отключается мод из админки
Код: Выделить всё
##############################################################
## MOD Title: Simple Quick Register
## MOD Author: svk < svk@front.ru > (Sergey) http://phpbbguru.net
## MOD Description: Add yhe quick register form to you board (on the index)
## MOD Version: 1.0.0
##
## Installation Level: Easy
## Installation Time: 10 minutes
## Files To Edit: index.php
## templates/subSilver/index_body.tpl
## admin/admin_board.php
## templates/subSilver/admin/board_config_body.tpl
## reg.php
## Included Files: n/a
## License: http://opensource.org/licenses/gpl-license.php GNU Public License v2
##############################################################
## For security purposes, please check: http://www.phpbb.com/mods/
## for the latest version of this MOD. Although MODs are checked
## before being allowed in the MODs Database there is no guarantee
## that there are no security problems within the MOD. No support
## will be given for MODs not found within the MODs Database which
## can be found at http://www.phpbb.com/mods/
##############################################################
## Author Notes: For qfs.quadra.ru
##############################################################
## MOD History:
##
## 2005-08-10 - Version 1.0.0
##
## - First Stable release. Version 1.0.0 of a MOD is always it's first stable release.
##
## 2005-08-17 - Version 1.3.0
## -Fix bugs
##
##############################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
##############################################################
#
#-----[ SQL ]------------------------------------------
#
INSERT INTO phpbb_config VALUES ('qr', 1);
#
#-----[ OPEN ]------------------------------------------
#
index.php
#
#-----[ FIND ]------------------------------------------
#
$template->assign_vars(array(
'TOTAL_POSTS' => sprintf($l_total_post_s, $total_posts),
#
#-----[ BEFORE, ADD ]------------------------------------------
#
$out = "<table width=\"100%\" cellpadding=\"3\" cellspacing=\"1\" border=\"0\" class=\"forumline\">
<tr><th class=\"row1\" align=\"center\">Быстрая регистрация:</td></tr>
<tr>
<td class=\"row1\" align=\"center\" valign=\"middle\" height=\"28\"><span class=\"gensmall\">
<form method=\"post\" action=\"reg.php\">
Имя: <input class=\"post\" type=\"text\" name=\"lgn\" size=\"8\" />
Пароль: <input class=\"post\" type=\"password\" name=\"pass\" size=\"10\" />
Повторите: <input class=\"post\" type=\"password\" name=\"pass2\" size=\"10\" />
E-mail: <input class=\"post\" type=\"text\" name=\"milo\" size=\"15\" />
<input type=\"submit\" name=\"submit\" value=\"Зарегистрироваться\" class=\"mainoption\" />
</span> </td></tr></form></table>";
#
#-----[ FIND ]------------------------------------------
#
'U_MARK_READ' => append_sid("index.$phpEx?mark=forums"))
);
#
#-----[ BEFORE, ADD ]------------------------------------------
#
'QR' => $out,
#
#-----[ OPEN ]------------------------------------------
#
templates/subSilver/index_body.tpl
#
#-----[ FIND ]------------------------------------------
#
<!-- END switch_user_logged_out -->
#
#-----[ BEFORE, ADD ]------------------------------------------
#
{QR}
#
#-----[ OPEN ]------------------------------------------
#
admin/admin_board.php
#
#-----[ FIND ]------------------------------------------
#
$disable_board_yes = ( $new['board_disable'] ) ? "checked=\"checked\"" : "";
$disable_board_no = ( !$new['board_disable'] ) ? "checked=\"checked\"" : "";
#
#-----[ AFTER, ADD ]------------------------------------------
#
$qr_yes = ( $new['qr'] ) ? "checked=\"checked\"" : "";
$qr_no = ( !$new['qr'] ) ? "checked=\"checked\"" : "";
#
#-----[ FIND ]------------------------------------------
#
"SMTP_YES" => $smtp_yes,
"SMTP_NO" => $smtp_no,
#
#-----[ AFTER, ADD ]------------------------------------------
#
"QR_YES" => $qr_yes,
"QR_NO" => $qr_no,
#
#-----[ OPEN ]------------------------------------------
#
templates/subSilver/admin/board_config_body.tpl
#
#-----[ FIND ]------------------------------------------
#
<tr>
<td class="row1">{L_DISABLE_BOARD}<br /><span class="gensmall">{L_DISABLE_BOARD_EXPLAIN}</span></td>
<td class="row2"><input type="radio" name="board_disable" value="1" {S_DISABLE_BOARD_YES} /> {L_YES} <input type="radio" name="board_disable" value="0" {S_DISABLE_BOARD_NO} /> {L_NO}</td>
</tr>
#
#-----[ AFTER, ADD ]------------------------------------------
#
<tr>
<td class="row1">Включить форму быстрой регистрации?<br /><span class="gensmall">Включает или выключает форму быстрой регистрации пользователей</span></td>
<td class="row2"><input type="radio" name="qr" value="1" {QR_YES} /> {L_YES} <input type="radio" name="qr" value="0" {QR_NO} /> {L_NO}</td>
</tr>
#
#-----[ OPEN ]------------------------------------------
#
# Файл не существует - создайте его
# File doesn't exist, create it
reg.php
#
#-----[ AFTER, ADD ]------------------------------------------
#
<?php
/***************************************************************************
* reg.php
* -------------------
* begin : Wednesday, Avgust 10, 2006
* copyright : (C) 2005 svk
* email : svk@front.ru
*
* Special for qfs.quadra.ru
*
*
***************************************************************************/
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
$back = "<p><a href = \"$board_config[script_path]\">Вернуться</a>";
//Получаю значение логина, пасса и мыла которые переданы от индекса
if( isset($HTTP_POST_VARS['submit']) )
{
$login = isset($HTTP_POST_VARS['lgn']) ? $HTTP_POST_VARS['lgn'] : '';
$pass = isset($HTTP_POST_VARS['pass']) ? $HTTP_POST_VARS['pass'] : '';
$pass2 = isset($HTTP_POST_VARS['pass2']) ? $HTTP_POST_VARS['pass2'] : '';
$milo = isset($HTTP_POST_VARS['milo']) ? $HTTP_POST_VARS['milo'] : '';
}
else {
message_die (GENERAL_ERROR, "Hacking attempt! You IP was logged and sent to administrator<br>Зафиксирована попытка взлома! Ваш IP был записан и выслан администратору.");}
//Проверяю совпадение пароля и подтверждения
if ($pass != $pass2) {message_die (GENERAL_ERROR, "Пароли не совпадают $back");}
//Проверяю на пустоту....
if (empty($login) OR empty($pass) OR empty($milo)) {message_die (GENERAL_ERROR, "Вы должны ввести имя пользователя, пароль и E-mail адрес! $back");}
//Проверяю не занят ли логин
$sql = "SELECT username, user_email FROM " .USERS_TABLE ." WHERE username = '$login'";
$result = $db->sql_query($sql);
$urow = $db->sql_fetchrow($result);
if (empty($urow['username'])) {} else {message_die (GENERAL_ERROR, "Такой пользователь уже существует $back");}
$sql = "SELECT username, user_email FROM " .USERS_TABLE ." WHERE user_email = '$milo'";
$result = $db->sql_query($sql);
$urow = $db->sql_fetchrow($result);
//Пароль совпал с логином? Непорядок!
if ($pass == $login) {message_die (GENERAL_ERROR, "Пароль не должен совпадать с именем пользователя. $back");}
//Проверяю корректность введенного мыла...
if (!eregi("^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]{2,4}",$milo)) {message_die (GENERAL_ERROR, "Введите корректный E-mail! $back");}
//Проверяю не занято ли мыло
if (empty($urow['user_email'])) {} else {message_die (GENERAL_ERROR, "Пользователь с таким E-mail адресом уже существует $back");}
//Получаю максимальный user_id который есть в базе
$sql = "select max(user_id) from " .USERS_TABLE;
$result = $db->sql_query($sql);
$urow = $db->sql_fetchrow($result);
$mu = $urow['max(user_id)'] + 1;
//Криптую пасс md5
$pass = md5($pass);
//Убираю всякую чушь из имени пользователя (sql injection мне не нужно :))
//$login = str_replace("\'", "''", ";", $login);
//Собственно, сам запрос добавления юзера
$rtime = time();
$sql = "INSERT INTO " .USERS_TABLE ." (user_regdate, user_id, user_active, username, user_password, user_email, user_lang) VALUES ('$rtime', $mu, 1, '$login', '$pass', '$milo', 'russian')";
if( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not register user. Mysql error', '', __LINE__, __FILE__, $sql);
}
$sql = "SELECT max(group_id) FROM " .GROUPS_TABLE;
$result = $db->sql_query($sql);
$grow = $db->sql_fetchrow($result);
$gid = $grow['max(group_id)'] + 1;
$sql = "INSERT INTO " .GROUPS_TABLE ." VALUES ($gid, 1, '', 'Personal User', 0, 1)";
$result = $db->sql_query($sql);
$sql = "INSERT INTO ". USER_GROUP_TABLE ." VALUES ($gid, $mu, 0)";
$result = $db->sql_query($sql);
message_die(MESSAGE, "Пользователь успешно зарегистрирован. $back");
?>
#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM