Тема: Регистрация пользователей

1. Распаковать в дистрибутив Strawberrу и активировать в меню плугинов.

Качаем Плагин

2. Там где хотите видеть Регистрацию пользователя вставляете это:

<?php echo $registration -> showForm(); ?>

Автор ПАШКА

Отредактированная версия by Lexa


Тестировал на Strawberry 1.0.2

Отредактировано Aurum (11 May 2006 11:54:39)

2

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

это версия для версий с группами: 1.0.2, 1.0.3, 1.0.4, 1.1a и будущии.

Признанный мастер чинпоко, а-ай ^_^

3

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

Вернул. Ща я чё-нить прикручу для заливки файлов, а то как-то стрёмно, на другие серваки заливается.

Признанный мастер чинпоко, а-ай ^_^

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

да надо такое, потому что стрем какойто получается ...

5

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

Aurum, http://strawberry.goodgirl.ru/forum/viewtopic.php?id=62

перезалей всё в "готовом", если не сложно.

Признанный мастер чинпоко, а-ай ^_^

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

ok

7

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

Aurum, супер, поставил бы я репутацию юзерей присвоил бы тебе много smile.

Признанный мастер чинпоко, а-ай ^_^

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

big_smile

9

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

Странно. Поставил плагин, включил, вставил нужную ссылку на созданной для \регистрации странице - создал пользователя. Проверил через админку - пользователь есть, все ОК.

Попробовал удалить - выдало ошибку: Warning: Invalid argument supplied for foreach() in c:\htdocs\mikemar.spb.ru\strawberry\inc\db\mysql.class.php on line 317

После этого сменил пароль просто на длинный и неудобоваримый.

При нажатии на сохранение - меня выкинуло из сессии. Теперь - просит ввести пароль. Мой пароль - не подходит, говорит Неправильное имя пользователя или пароль!. Хотя пароль вбит в автозаполнялку оперы и ошибится в нем не мог...

Пробовал входить другими пользователями служебными - та же фигня...

Что может быть это такое?

10

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

И вообще, есть ли проверка на длину строки, вбиваемой в поле? Я, конечно, ламер, но возможен ли такой вариант, когда вбитый пароль превышает отведенное на него место, но, так как не проверяется соответствие - ошибка не выдается, запрос обрабатывается... и что-то портит в таблице?

11

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

Проверки нет, в базу записывается только 255 символов (это выставлено в самой БД).

Чтобы менять пароль не через через phpMyAdmin. Вставь этот код куда угодно после подключения head.php:

$sql->update(array(
'table' => 'users'
'where' => array('id = {ID}'),
'values' => array('password' => md5x('000'))
));

Теперь атеньшан. Замени {ID} в 'where' => array('id = {ID}') на ID пользователя (скорее всего 1 [ты] или 2 [твой тестовый юзер]).
Теперь заходи в админку с паролем 000 (три нуля).

upd на всякий случай, чтобы точно знать ID напиши сначало этот код:

echo_r($users);

Из него ты узнаешь всю рабочую инфу о юзерах системы. После этого можешь писать код, который поможет "восстановить" пароль.

Признанный мастер чинпоко, а-ай ^_^

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

а у меня в АСР не отображаются настройки включенного плагина.
клубника 1.0.4

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

а потому что языковые файлы не вту папку засунуты

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

Aurum, в ту папку, все как положено воткнул вроде.. там сложно перепутать wink проблема пока не решена..

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

у меня также настройки не отображаются
все залилб включил, а настроек нет

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

Я в плагине кое-что исправил, и появились настройки.
Могу здесь выложить если очень надо.

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

Выкладывай

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

<?php
/*
Plugin Name:    User.Registration
Plugin URI:     http://cutenews.ru
Description:    <strong>Русский:</strong> плагин позволяет посетителям вашего сайта самостоятельно зарегитсрироваться в системе. Возможно подключение с разными шаблонами.<br />В ACP можно указать с каким уровнем будут регистрироваться пользователи (Админ, Редактор, Журналист и Комментатор), так же там можно включить (по умолчанию включена) и настроить защиту от флуда регистрациями.<br /><br /><strong>English:</strong> Your visitors will be able to register as commenters (by default) after they fill the registration form.
Version:        1.1
Author:         Пашка
Author URI:     mailto:pashka.89@mail.ru
Application:     Strawberry
*/

add_filter('main-options', 'regmod_AddToOptions');
add_action('plugin-options', 'regmod_CheckAdminOptions');

// Fix #1
if(!function_exists('mysql_escape_string'))
{
    /* Что-то похожее на mysql_escape_string */
    function mysql_escape_string($string)
    {
        return htmlspecialchars($string, ENT_QUOTES);
    }
}

class userRegistration
{
    function userRegistration()
    {
    global $xfields;
        if(!is_a($xfields, 'XFieldsData'))
        {
            $xfields = new XFieldsData();
        }

        $this -> lang = cute_lang('plugins/registration');

        $this -> settings = new PluginSettings('registration');

        if(!is_array($this -> settings -> settings))
        {
            $this -> setDefSettings();
        }
    }

    function setDefSettings()
    {
        $this -> settings -> settings = array(
            'preventRegFlood' => true,
            'RegDelay'        => 180,
            'banOnWarns'      => 3,
            'regLevel'        => 4,
        );

        $this -> settings -> save();
    }

    function showForm($tpl = 'default')
    {
    global $sql, $xfields;
        switch($_POST['step'])
        {
            default:
            case 1:
                    $tpl = file_exists(rootpath.'/plugins/registration/'.$tpl.'/form.tpl') ? GetContents(rootpath.'/plugins/registration/'.$tpl.'/form.tpl') : GetContents(rootpath.'/plugins/registration/default/form.tpl');

                    $replaces = array(
                        '{lang.RegNewUser}' => $this -> lang['regNewUser'],
                        '{lang.Login}'      => $this -> lang['regLogin'],
                        '{lang.Passw}'      => $this -> lang['regPassw'],
                        '{lang.Re}'         => $this -> lang['regRe'],
                        '{lang.Nick}'       => $this -> lang['regNick'],
                        '{lang.EMail}'      => $this -> lang['regEmail'],
                        '{lang.AutoLogin}'  => $this -> lang['regAutoLogin'],
                    );

                    if(!$this -> settings -> settings[$_SERVER['REMOTE_ADDR']])
                    {
                        $this -> settings -> settings[$_SERVER['REMOTE_ADDR']] = array('warns' => 0);
                    }
                break;
            case 2:
                    if($this -> settings -> settings['preventRegFlood'] === true && (time() - $this -> settings -> settings[$_SERVER['REMOTE_ADDR']]['LastRegTime']) < $this -> settings -> settings['RegDelay'])
                    {
                        $tpl = file_exists(rootpath.'/plugins/registration/'.$tpl.'/regError.tpl') ? GetContents(rootpath.'/plugins/registration/'.$tpl.'/regError.tpl') : GetContents(rootpath.'/plugins/registration/default/regError.tpl');
                        $replaces = array(
                            '{lang.Error}'     => $this -> lang['regError'],
                            '{lang.ErrorText}' => $this -> lang['regErrorFlood'],
                        );

                        $this -> settings -> settings[$_SERVER['REMOTE_ADDR']]['warns']++;

                        if($this -> settings -> settings[$_SERVER['REMOTE_ADDR']]['warns'] >= $this -> settings -> settings['banOnWarns'])
                        {
                            if(!$sql -> select(array('table' => 'ipban', 'where' => array('ip = '.$_SERVER['REMOTE_ADDR'])))){
                                $sql -> insert(
                                    array(
                                        'table'  => 'ipban',
                                        'values' => array(
                                            'ip' => $_SERVER['REMOTE_ADDR']
                                        )
                                    )
                                );
                            }
                        }

                        break;
                    }

                    if($_POST['register']['passw1'] != $_POST['register']['passw2'] || $_POST['register']['passw1'] != mysql_escape_string($_POST['register']['passw1']))
                    {
                        $tpl = file_exists(rootpath.'/plugins/registration/'.$tpl.'/regError.tpl') ? GetContents(rootpath.'/plugins/registration/'.$tpl.'/regError.tpl') : GetContents(rootpath.'/plugins/registration/default/regError.tpl');
                        $replaces = array(
                            '{lang.Error}'     => $this -> lang['regError'],
                            '{lang.ErrorText}' => $this -> lang['regErrorPasswords'],
                        );

                        break;
                    }

                    if(!preg_match('/^[\.a-z0-9_\-]+[@][a-z0-9_\-]+([.][a-z0-9_\-]+)+[a-z]{1,4}$/i', $_POST['register']['email']))
                    {
                        $tpl = file_exists(rootpath.'/plugins/registration/'.$tpl.'/regError.tpl') ? GetContents(rootpath.'/plugins/registration/'.$tpl.'/regError.tpl') : GetContents(rootpath.'/plugins/registration/default/regError.tpl');
                        $replaces = array(
                            '{lang.Error}'     => $this -> lang['regError'],
                            '{lang.ErrorText}' => $this -> lang['regErrorMail'],
                        );

                        break;
                    }

                    if($sql -> select(array('table' => 'users', 'where' => array('username = '.mysql_escape_string($_POST['register']['login']), 'or', 'name = '.mysql_escape_string($_POST['register']['nick'])))))
                    {
                        $tpl = file_exists(rootpath.'/plugins/registration/'.$tpl.'/regError.tpl') ? GetContents(rootpath.'/plugins/registration/'.$tpl.'/regError.tpl') : GetContents(rootpath.'/plugins/registration/default/regError.tpl');
                        $replaces = array(
                            '{lang.Error}'     => $this -> lang['regError'],
                            '{lang.ErrorText}' => $this -> lang['regErrorName'],
                        );

                        break;
                    }

                    $this -> settings -> settings[$_SERVER['REMOTE_ADDR']]['LastRegTime'] = time();

                    $sql -> insert(
                        array(
                            'table'  => 'users',
                            'values' => array(
                                'date'      => time(), # Без поправки по часовому поясу
                                'usergroup' => $this -> settings -> settings['regLevel'],
                                'username'  => mysql_escape_string($_POST['register']['login']),
                                'password'  => md5x($_POST['register']['passw1']),
                                'name'      => mysql_escape_string($_POST['register']['nick']),
                                'mail'      => $_POST['register']['email'],
                                'hide_mail' => 1
                            )
                        )
                    );

                    $tpl = file_exists(rootpath.'/plugins/registration/'.$tpl.'/regOk.tpl') ? GetContents(rootpath.'/plugins/registration/'.$tpl.'/regOk.tpl') : GetContents(rootpath.'/plugins/registration/default/regOk.tpl');

                    $replaces = array(
                        '{lang.Ok}' => $this -> lang['regOk'],
                    );

                    if($_POST['register']['autologin'] == true)
                    {
                        $replaces = array(
                            '{lang.Ok}' => $this -> lang['regOkAndLogined'],
                        );

                        if(session)
                        {
                            $_SESSION['username']      = mysql_escape_string($_POST['register']['login']);
                            $_SESSION['md5_password']  = md5x($_POST['register']['passw1']);
                            $_SESSION['ip']            = $_SERVER['REMOTE_ADDR'];
                            # $_SESSION['login_referer'] = $_SERVER['HTTP_REFERER'];
                        }

                        $sql->update(
                            array(
                                'table'  => 'users',
                                'where'  => array('username = '.mysql_escape_string($_POST['register']['login'])),
                                'values' => array('last_visit' => time())
                            )
                        );
                    }
                break;
        }


        foreach($replaces as $from => $to)
        {
            $tpl = str_replace($from, $to, $tpl);
        }

        $this -> settings -> save();

        return $tpl;
    }
}

add_action('head', 'regInit');
function regInit()
{
global $registration;
    $registration = new userRegistration();
}

function regForm($template){
global $registration;
    return $registration -> showForm($template);
}

function regmod_AddToOptions($options) {
global $PHP_SELF;
    $lang['regmod'] = cute_lang('plugins/registration');

    $options[] = array(
        'name'        => $lang['regmod']['regPluginName'],
        'url'        => $PHP_SELF.'?mod=options&amp;action=regmod',
        'category'    => 'users',
    );

    return $options;
}

add_action('plugins','regmod_CheckAdminOptions');
function regmod_CheckAdminOptions()
{
    global $usergroups;

    if ($_GET['action'] == 'regmod')
    {
        $lang['regmod'] = cute_lang('plugins/registration');
        $lang['users']  = cute_lang('editusers');

        echoheader('users', $lang['regmod']['regPluginName']);

        $settings = new PluginSettings('registration');

        if(!is_array($settings -> settings))
        {
            $settings -> settings = array(
                'preventRegFlood' => true,
                'RegDelay'        => 180,
                'banOnWarns'      => 3,
                'regLevel'        => 4,
            );

            $settings -> save();
        }

        if($_GET['save'])
        {
            $settings -> settings = array(
                'preventRegFlood' => $_POST['regmod']['noflood'] ? true : false,
                'RegDelay'        => (int) $_POST['regmod']['noregtime'],
                'banOnWarns'      => (int) $_POST['regmod']['warnstoban'],
                'regLevel'        => (int) $_POST['regmod']['reglevel'],
            );

            $settings -> save();
        }

        $groups_list= array();

        foreach ($usergroups as $row){
            $groups_list[$row['id']] = $row['name'];
        }

        ?>
        <table cellspacing="0" cellpadding="0">
            <tr>
                <td width="25" align="middle">
                    <img border="0" src="skins/images/help_small.gif">
                </td>
                <td>
                    &nbsp;<a href="javascript:Help('regmod')"><?=$lang['regmod']['regHelpTitle']?></a>
                </td>
            </tr>
            <tr>
                <td>&nbsp;</td>
                <td>&nbsp;</td>
            </tr>
        </table>
        <form method="post" action="<?=$PHP_SELF ?>?mod=options&action=regmod&t=<?=time()?>&save=true">
        <table width="450" border="0" cellspacing="0" cellpadding="2">
            <tr>
                <td align="right" width="265"><?=$lang['regmod']['regPreventRegFlood']?>:&nbsp;</td>
                <td>
                    <select name="regmod[noflood]" style="width:100%">
                        <option value="0"><?=$lang['regmod']['regNo']?></option>
                        <option value="1" <?=($settings -> settings['preventRegFlood']) ? 'selected' : '';?>><?=$lang['regmod']['regYes']?></option>
                    </select>
                </td>
            </tr>
            <tr>
                <td align="right"><?=$lang['regmod']['regDelayTime']?>:&nbsp;</td>
                <td>
                    <input type="text" name="regmod[noregtime]" style="width:100%" value="<?=$settings -> settings['RegDelay']?>" />
                </td>
            </tr>
            <tr>
                <td align="right"><?=$lang['regmod']['regWarns2Ban']?>:&nbsp;</td>
                <td>
                    <input type="text" name="regmod[warnstoban]" style="width:100%" value="<?=$settings -> settings['banOnWarns']?>" />
                </td>
            </tr>
            <tr>
                <td align="right">&nbsp;</td>
                <td>&nbsp;</td>
            </tr>
            <tr>
                <td align="right"><?=$lang['regmod']['regLevel']?>:&nbsp;</td>
                <td><?=makeDropDown($groups_list, 'regmod[reglevel]', $settings -> settings['regLevel']); ?>
                </td>
            </tr>
        </table>
        <input type="submit" value="<?=$lang['regmod']['regSave']?>" />
        </form>

        <?php
        echofooter();
    }
}

add_filter('help-sections', 'regAdminHelp');
function regAdminHelp($help_sections)
{
    $lang['regmod'] = cute_lang('plugins/registration');
    $help_sections['regmod'] = $lang['regmod']['regHelp'];

    return $help_sections;
}
?>

Используй тег CODE!

Отредактировано Лёха zloy и красивый (20 May 2006 21:26:22)

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

Лёха zloy и красивый пишет:

Проверки нет, в базу записывается только 255 символов (это выставлено в самой БД).

Чтобы менять пароль не через через phpMyAdmin. Вставь этот код куда угодно после подключения head.php:

$sql->update(array(
'table' => 'users'
'where' => array('id = {ID}'),
'values' => array('password' => md5x('000'))
));

Теперь атеньшан. Замени {ID} в 'where' => array('id = {ID}') на ID пользователя (скорее всего 1 [ты] или 2 [твой тестовый юзер]).
Теперь заходи в админку с паролем 000 (три нуля).

upd на всякий случай, чтобы точно знать ID напиши сначало этот код:

echo_r($users);

Из него ты узнаешь всю рабочую инфу о юзерах системы. После этого можешь писать код, который поможет "восстановить" пароль.

У меня CuteNews 2.5.4 и произошла такая же проблема. Выкинуло из сесии и не принимает старый пароль. В теме: http://strawberry.goodgirl.ru/forum/vie … php?id=538 был предложен вариант ручной замены пароля в формате md5 в самой базе на предложенные 2, но их все равно система не принимает. Я решил воспользоваться способом, указанным здесь и вставил в index.php код:

$sql->update(array(
'table' => 'users'
'where' => array('id = {ID}'),
'values' => array('password' => md5x('000'))
));

сразу после подключения head.php, как и было сказано, но мне браузер при поытке загрузить старницу выдает такую строку: Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ')' in /home/delfin/domains/delfin.crimea.ua/public_html/show/index.php on line 16
Вот мой index.php:

<?php

$PHP_SELF                = 'index.php';
$config_cutenews_version = 'CuteNews.RU';
$config_cutenews_built   = '2.5.4';

#-------------------------------------------------------------------------------

if (!filesize('data/config.php')){
    include 'install/install.php';
}

include_once 'head.php';
$sql->update(array(
'table' => 'users'
'where' => array('id = 1'),
'values' => array('password' => md5x('000'))
));

if ($config_cutenews_built > $config_version_id and $is_logged_in and $member['level'] == 1){
    include 'upgrade/upgrade.php';
}

@chmoddir($cutepath.'/data', chmod);
@chmoddir($cutepath.'/cache', chmod);
@chmod($cutepath.'/data', 0755);

$timer = new microTimer;
$timer->start();

if ($action == 'logout'){
    setcookie('md5_password', '', time() - 3600 * 24 * 365);
    setcookie('username', '', time() - 3600 * 24 * 365);
    setcookie('login_referer', '');
    @session_destroy();
       @session_unset();
    @setcookie(session_name(), '');
?>

<!-- Javascript redirect -->
<script type="text/javascript">self.location.href="<?=$_SERVER['PHP_SELF']; ?>";</script>

<?
}

if (isset($config_skin) and $config_skin and file_exists($cutepath.'/skins/'.$config_skin.'.skin.php')){
    require_once $cutepath.'/skins/'.$config_skin.'.skin.php';
} else {
    $using_safe_skin = true;
    require_once $cutepath.'/skins/default.skin.php';
}

b64dck();

// If User is Not Logged In, Display The Login Page
if (!$is_logged_in){
    if (session){
        @session_destroy();
        @session_unset();
    }

    setcookie('username', '', time() - 3600 * 24 * 365);
    setcookie('password', '');
    setcookie('md5_password', '', time() - 3600 * 24 * 365);
    setcookie('login_referer', '');
    echoheader('user', $echo['header']);
    
?>
<table border="0" cellspacing="0" cellpadding="1">
 <form name="login" action="<?=$PHP_SELF; ?>" method="post" onsubmit="return process_form(this)">
  <tr>
   <td width="80"><?=$echo['username']; ?>
   <td><input tabindex="1" type="text" name="username" value="<?=$lastusername; ?>" style="width:134">
  <tr>
   <td><?=$echo['password']; ?>
   <td><input type="password" name="password" style="width:134">
  <tr>
   <td>
   <td><input accesskey="s" type="submit" style="width:134;" value="<?=$echo['login']; ?>">
  <tr>
   <td align="center" colspan="3"><?=$result; ?></td>
  </tr>
 <input type="hidden" name="action" value="dologin">
 </form>
</table>

<?
   echofooter();
} elseif ($is_logged_in){
    if (check_referer){
        $self = $_SERVER['SCRIPT_NAME'];

        if (!$self){
            $self = $_SERVER['REDIRECT_URL'];
        }

        if (!$self){
            $self = $PHP_SELF;
        }

        if (!eregi($self, $HTTP_REFERER) and $HTTP_REFERER){
            echo sprintf($echo['badReferer'], $PHP_SELF);
            exit;
        }
    }

// ********************************************************************************
// Include System Module
// ********************************************************************************
    if ($_SERVER['QUERY_STRING'] == 'debug'){
        debug();
    }

    if ($member['level'] > 3 and $mod != 'personal' and $mod != 'editcomments' and $action != 'dosavepersonal'){
        header('Location: '.$PHP_SELF.'?mod=personal');
        exit;
    }

    $system_modules = array(
                      //name of mod   //access
                      'addnews'      => 'user',
                      'editnews'     => 'user',
                      'main'         => 'user',
                      'options'      => 'user',
                      'personal'     => 'user',
                      'images'       => 'user',
                      'editusers'    => 'admin',
                      'plugins'      => 'admin',
                      'syscon'       => 'admin',
                      'templates'    => 'admin',
                      'editcomments' => 'user',
                      'tools'        => 'admin',
                      'ipban'        => 'admin',
                      'about'        => 'user',
                      'categories'   => 'admin',
                      'help'         => 'user',
                      'snr'          => 'admin',
                      'debug'        => 'admin',
                      'preview'      => 'user'
                      );


    if (!$mod){
        require $cutepath.'/inc/mod/main.mdu';
    } elseif ($system_modules[$mod]){
        if ($system_modules[$mod] == 'user'){
            require $cutepath.'/inc/mod/'.$mod.'.mdu';
        } elseif ($system_modules[$mod] == 'admin' and $member['level'] == 1){
            require $cutepath.'/inc/mod/'.$mod.'.mdu';
        } elseif ($system_modules[$mod] == 'admin' and $member['level'] != 1){
            msg('error', $echo['error'], $echo['moduleAccess']);
        } elseif ($system_modules[$mod] == 'any'){
            require $cutepath.'/inc/mod/'.$mod.'.mdu';
        }
    } else {
        msg('error', $echo['error'], $echo['wrongModule']);
    }
}
?><!-- Страница сгенерирована за <?=$timer->stop(); ?> сек. -->

Пожалуйста, кто-нибудь помогите.

20

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

Если я неошибаюсь, то плагины CuteNews и Strawberry несовместимы! (Это если я неошибаюсь)!

Вышел 3аяц по нужде и нуждой прилип к тру6е

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

Послушай, если проблема еще жва, убери из index`а код с заменой пароля и попробуй войти с "000"...  Ваще-то, надеюсь, что я опоздал...

22

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

А как сделать так чтоб юзер мог залогиница с главной страницы? (Т.е. как прилепить на сайт квадратик с полями "логи" "пароль"и кнопочку "войт" и чтоб потом в этом квадратике отображалась сцылка "админка" либо просто был автоматический редирект в админку в добавление новости.)

Отредактировано Lucky-DEN (27 Oct 2007 19:36:36)

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

Lucky-DEN пишет:

А как сделать так чтоб юзер мог залогиница с главной страницы? (Т.е. как прилепить на сайт квадратик с полями "логи" "пароль"и кнопочку "войт" и чтоб потом в этом квадратике отображалась сцылка "админка" либо просто был автоматический редирект в админку в добавление новости.)

я делал так:


если strawberry 1.1.1, то

скопировал модуль login.mdu, например login_ext.mdu - оставил его в тойже папке.

отредактировал новый файл:

<?php
// из punBB
$PHP_SELF = $_SERVER["HTTP_REFERER"];
function random_pass($len = 6){

    $chars    = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    $password = '';

    for ($i = 0; $i < $len; ++$i){
        $password .= substr($chars, (mt_rand() % strlen($chars)), 1);
    }

return $password;
}

if ($action == 'forgot'){
    if ($for){
        if ($key){
            $new_password = @file_read(cache_directory.'/_'.$for.'_.tmp');
            unlink(cache_directory.'/_'.$for.'_.tmp');

            if ($key == $new_password){
                $sql->update(array(
                'table'  => 'users',
                'where'  => array("username = $for"),
                'values' => array('password' => $new_password)
                ));

                echo 'Пароль был успешно изменён изменён. <br><a href="'.$PHP_SELF.'">'.t('Вернуться назад').'</a>';
                break;
            } else {
                echo 'Ключ не верный. Попробуйте снова. <br><a href="'.$PHP_SELF.'">'.t('Вернуться назад').'</a>';
                break;
            }
        } else {
            foreach ($sql->select(array('table' => 'users')) as $row){
                if (strtolower($for) == strtolower($row['username']) or strtolower($for) == strtolower($row['mail'])){
                    if ($row['mail']){
                        $new_password   = random_pass();
                        $activation_url = $config['http_script_dir'].'/?mod='.$mod.'&action='.$action.'&key='.md5x($new_password).'&for='.$row['username'];

                        ob_start();
                        include mails_directory.'/forgot.tpl';
                        $tpl['body'] = ob_get_clean();

                        preg_match('/Subject:(.*)/i', $tpl['body'], $tpl['subject']);
                        preg_match('/Attachment:(.*)/i', $tpl['body'], $tpl['attachment']);

                        $tpl['body']       = preg_replace('/Subject:(.*)/i', '', $tpl['body']);
                        $tpl['body']       = preg_replace('/Attachment:(.*)/i', '', $tpl['body']);
                        $tpl['body']       = trim($tpl['body']);
                        $tpl['subject']    = trim($tpl['subject'][1]);
                        $tpl['attachment'] = trim($tpl['attachment'][1]);

                        if (!file_exists(cache_directory.'/_'.$row['username'].'_.tmp')){
                            file_write(cache_directory.'/_'.$row['username'].'_.tmp', md5x($new_password));
                            cute_mail($row['mail'], $tpl['subject'], $tpl['body'], $tpl['attachment']);
                        }

                        echo 'Вам на e-mail было отправлено сообщение. Проверьте почту. <br><a href="'.$PHP_SELF.'">'.t('Вернуться назад').'</a>';
                        break;
                    } else {
                        echo 'Ой какая непрятность. Пользователь <b>%user</b> найден, но он не указал свой e-mail. Если вы являетесь этим неродивым пользователем, то обратитесь к администрации.'. array('user' => $row['name']).' <br><a href="'.$PHP_SELF.'">'.t('Вернуться назад').'</a>';
                        break;
                    }
                } else {
                    echo 'Нет такого пользователя в базе. Извините, проваливайте отсюда. <br><a href="'.$PHP_SELF.'">'.t('Вернуться назад').'</a>';
                    break;
                }
            }
        }
    } else {
?>

<form action="<?=$PHP_SELF; ?>" method="get">
<input name="mod" type="hidden" value="<?=$mod; ?>">
<input name="action" type="hidden" value="<?=$action; ?>">
<?=t('Укажите ваш логин или e-mail'); ?><br />
<input class="restorepass" name="for" type="text" value=""><br />
<input class="restorepassbtn" type="submit" value="  <?=t('Восстановить'); ?> ">
</form>

<?
    }
} else {
    cute_setcookie('username', '', (time - 3600 * 24 * 365), '/');
    cute_setcookie('password', '');
    cute_setcookie('md5_password', '', (time - 3600 * 24 * 365), '/');
    cute_setcookie('login_referer', '');
?>

<table border="0" cellspacing="0" cellpadding="1">
 <form name="login" action="<?=$PHP_SELF; ?>" method="post" onsubmit="return process_form(this)">
  <tr>
   <td><?=t('Логин'); ?>
   <td><input class="user" tabindex="1" type="text" name="username" value="">
  <tr>
   <td><?=t('Пароль'); ?>
   <td><input class="pass" type="password" name="password">
   <hr>
  <tr>
   <td><a href="<?=$PHP_SELF; ?>?mod=login&action=forgot"><?=t('Забыли пароль?'); ?></a>
   <td><input class="loginbtn" accesskey="s" type="submit" value="<?=t('Вход...'); ?>">
   <td align="center" colspan="3"><?=$result; ?></td>
  </tr>
 <input type="hidden" name="action" value="dologin">
 </form>
</table>

<?
}
?>

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

добавил в раздел Кабинета такое(это блок драгндропа)

<? if ($member){ ?>
<li><a href="<?=$config['http_script_dir']; ?>?mod=personal">Профиль</a></li>
<li><a href="?do=logout">Выход</a></li>
<hr>
<? if (cute_get_rights('ddb', 'read')){ ?>
<li><a href="<?=$config['http_script_dir'] ;?>">Админка</a></li>
<li><a href="?ddb=edit">Редактировать блоки</a></li>
<li><a href="?ddb=html">Смотреть html</a></li>
<li><a href="<?=$config['http_script_dir'] ;?>/docs">Документация</a></li>
<? } ?>
<? } else { ?>
<li><a href="?do=registration">Регистрация</a></li>
</ul>
<?
include_once 'admin/head.php';
require modules_directory.'/login_ext.mdu';
?>
<? } ?>

ну и в этой строчке

<li><a href="?do=logout">Выход</a></li>

видно, что блок логаута, вот его скрипт:

<?php
cute_setcookie('username', '', (time() - 3600 * 24 * 365)); // cnr
cute_setcookie('md5_password', '', (time() - 3600 * 24 * 365)); // cnr
cute_setcookie('username', '', (time() - 3600 * 24 * 365), '/');
cute_setcookie('md5_password', '', (time() - 3600 * 24 * 365), '/');
cute_setcookie('login_referer', '');
@session_destroy();
@session_unset();
cute_setcookie(session_name(), '');
header('Location: '.$_SERVER["HTTP_REFERER"]);
?>

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

Strawberry 1.1.1.

Нужно через форму регистрации указать обязательные данные о ПОЛЕ человека (с выбором-мужской, женский). И что-бы в персональных данных также выводились данные о Поле.
Полная версия будет как здесь - mironovka.kiev.ua/regg/.
Может кто делал такое, хочу спросить о направлении в котором нужно "двигаться".
Или изменять данные в файлах registration.php, form.tpl, registration.ini, personal.php  или создавать дополнительные поля с записью в базу.

Отредактировано olafsen (29 Dec 2010 14:12:38)

25

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

olafsen пишет:

Или изменять данные в файлах ... или создавать дополнительные поля с записью в базу

Вместо "или" подставляем "и" и движемся в этом направлении wink