Beispiel #1
0
        mso_redirect('loginform');
    }
    if (!$comuser['comusers_nik']) {
        $hello = t('Привет!');
    } else {
        $hello = t('Привет,') . ' ' . $comuser['comusers_nik'] . '!';
    }
    eval(mso_tmpl_ts('type/loginform/units/loginform-comuser-tmpl.php'));
} else {
    $redirect_url = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : getinfo('siteurl');
    // для запоминания уже введенных полей
    $vreg_email = $vreg_password = $vreg_password_repeat = $vreg_nik = $vreg_url = '';
    if ($post = mso_check_post(array('freg_session_id', 'freg_rules_ok', 'freg_email', 'freg_password', 'freg_password_repeat', 'freg_nik', 'freg_url', 'freg_submit'))) {
        mso_checkreferer();
        // обработка _post
        $post = mso_clean_post(array('freg_email' => 'email', 'freg_password' => 'base', 'freg_password_repeat' => 'base', 'freg_nik' => 'base|not_url', 'freg_url' => 'base', 'freg_redirect_url' => 'base'), $post);
        // подставим введенные поля
        $vreg_email = $post['freg_email'];
        $vreg_password = $post['freg_password'];
        $vreg_password_repeat = $post['freg_password_repeat'];
        $vreg_nik = $post['freg_nik'];
        $vreg_url = $post['freg_url'];
        // проверки введенных данных
        $error = '';
        if (!$post['freg_rules_ok']) {
            $error .= '<div class="mso-message-error">' . tf('Необходимо принять правила сайта') . '</div>';
        }
        if (!$post['freg_email']) {
            $error .= '<div class="mso-message-error">' . tf('Не указан email') . '</div>';
        } else {
            // email указан, проверим его корректность
Beispiel #2
0
function _mso_login()
{
    global $MSO;
    // обрабатываем POST если есть
    if ($_POST) {
        $_POST = mso_clean_post(array('flogin_submit' => 'base', 'flogin_redirect' => 'base', 'flogin_user' => 'base', 'flogin_password' => 'base', 'flogin_session_id' => 'base'));
    }
    if ($_POST and isset($_POST['flogin_submit']) and isset($_POST['flogin_redirect']) and isset($_POST['flogin_user']) and isset($_POST['flogin_password']) and isset($_POST['flogin_session_id'])) {
        sleep(3);
        // задержка - примитивная защита от подбора пароля
        $flogin_session_id = $_POST['flogin_session_id'];
        # защита сесии
        if ($MSO->data['session']['session_id'] != $flogin_session_id) {
            mso_redirect('loginform/error');
        }
        $flogin_redirect = urldecode($_POST['flogin_redirect']);
        if ($flogin_redirect == 'home') {
            $flogin_redirect = getinfo('siteurl');
        }
        $flogin_user = $_POST['flogin_user'];
        $flogin_password = $_POST['flogin_password'];
        # проверяем на strip - запрещенные символы
        if (!mso_strip($flogin_user, true) or !mso_strip($flogin_password, true)) {
            mso_redirect('loginform/error');
        }
        $flogin_password = mso_md5($flogin_password);
        $CI =& get_instance();
        // если это комюзер, то логин = email
        // проверяем валидность email и если он верный, то ставим куку на этого комюзера
        // и редиректимся на главную (куку ставить только на главную!)
        // если же это обычный юзер-автор, то проверяем логин и пароль по базе
        if (mso_valid_email($flogin_user)) {
            // если в логине мыло, то проверяем сначала в таблице авторов
            $CI->db->from('users');
            # таблица users
            $CI->db->select('*');
            # все поля
            $CI->db->limit(1);
            # одно значение
            $CI->db->where('users_email', $flogin_user);
            // where 'users_login' = $flogin_user
            $CI->db->where('users_password', $flogin_password);
            // where 'users_password' = $flogin_password
            $query = $CI->db->get();
            if ($query->num_rows() > 0) {
                $userdata = $query->result_array();
                # добавляем юзера к сессии
                $CI->session->set_userdata('userlogged', '1');
                $data = array('users_id' => $userdata[0]['users_id'], 'users_nik' => $userdata[0]['users_nik'], 'users_login' => $userdata[0]['users_login'], 'users_password' => $userdata[0]['users_password'], 'users_groups_id' => $userdata[0]['users_groups_id'], 'users_last_visit' => $userdata[0]['users_last_visit'], 'users_show_smiles' => $userdata[0]['users_show_smiles'], 'users_time_zone' => $userdata[0]['users_time_zone'], 'users_language' => $userdata[0]['users_language'], 'users_avatar_url' => $userdata[0]['users_avatar_url'], 'users_email' => $userdata[0]['users_email']);
                $CI->session->set_userdata($data);
                // сразу же обновим поле последнего входа
                $CI->db->where('users_id', $userdata[0]['users_id']);
                $CI->db->update('users', array('users_last_visit' => date('Y-m-d H:i:s')));
                mso_redirect($flogin_redirect, true);
            } else {
                // это не автор, значит это комюзер
                $CI->db->select('comusers_id, comusers_password, comusers_email, comusers_nik, comusers_url, comusers_avatar_url, comusers_last_visit');
                $CI->db->where('comusers_email', $flogin_user);
                $CI->db->where('comusers_password', $flogin_password);
                $query = $CI->db->get('comusers');
                if ($query->num_rows()) {
                    $comuser_info = $query->row_array(1);
                    // вся инфа о комюзере
                    // сразу же обновим поле последнего входа
                    $CI->db->where('comusers_id', $comuser_info['comusers_id']);
                    $CI->db->update('comusers', array('comusers_last_visit' => date('Y-m-d H:i:s')));
                    $expire = time() + 60 * 60 * 24 * 365;
                    // 365 дней
                    $name_cookies = 'maxsite_comuser';
                    $value = serialize($comuser_info);
                    mso_add_to_cookie($name_cookies, $value, $expire, $flogin_redirect);
                    // в куку для всего сайта
                    exit;
                } else {
                    mso_redirect('loginform/error');
                    exit;
                }
            }
        } else {
            // это обычный автор
            $CI->db->from('users');
            # таблица users
            $CI->db->select('*');
            # все поля
            $CI->db->limit(1);
            # одно значение
            $CI->db->where('users_login', $flogin_user);
            // where 'users_login' = $flogin_user
            $CI->db->where('users_password', $flogin_password);
            // where 'users_password' = $flogin_password
            $query = $CI->db->get();
            if ($query->num_rows() > 0) {
                $userdata = $query->result_array();
                # добавляем юзера к сессии
                $CI->session->set_userdata('userlogged', '1');
                $data = array('users_id' => $userdata[0]['users_id'], 'users_nik' => $userdata[0]['users_nik'], 'users_login' => $userdata[0]['users_login'], 'users_password' => $userdata[0]['users_password'], 'users_groups_id' => $userdata[0]['users_groups_id'], 'users_last_visit' => $userdata[0]['users_last_visit'], 'users_show_smiles' => $userdata[0]['users_show_smiles'], 'users_time_zone' => $userdata[0]['users_time_zone'], 'users_language' => $userdata[0]['users_language'], 'users_avatar_url' => $userdata[0]['users_avatar_url'], 'users_email' => $userdata[0]['users_email']);
                $CI->session->set_userdata($data);
                // сразу же обновим поле последнего входа
                $CI->db->where('users_id', $userdata[0]['users_id']);
                $CI->db->update('users', array('users_last_visit' => date('Y-m-d H:i:s')));
                mso_redirect($flogin_redirect, true);
            } else {
                mso_redirect('loginform/error');
            }
        }
        // автор
    } else {
        $MSO->data['type'] = 'loginform';
        $template_file = $MSO->config['templates_dir'] . $MSO->config['template'] . '/index.php';
        if (file_exists($template_file)) {
            require $template_file;
        } else {
            show_error('Ошибка - отсутствует файл шаблона index.php');
        }
    }
}
Beispiel #3
0
function forms_content_callback($matches)
{
    $text = $matches[1];
    $text = str_replace("\r", "", $text);
    $text = str_replace('&nbsp;', ' ', $text);
    $text = str_replace("\t", ' ', $text);
    $text = str_replace('<br />', "<br>", $text);
    $text = str_replace('<br>', "\n", $text);
    $text = str_replace("\n\n", "\n", $text);
    $text = str_replace('     ', ' ', $text);
    $text = str_replace('    ', ' ', $text);
    $text = str_replace('   ', ' ', $text);
    $text = str_replace('  ', ' ', $text);
    $text = str_replace("\n ", "\n", $text);
    $text = str_replace("\n\n", "\n", $text);
    $text = trim($text);
    $out = '';
    // убиваем исходный текст формы
    //$r = preg_match_all('!\[email=(.*?)\]|\[redirect=(.*?)\]\[subject=(.*?)\]|\[field\](.*?)\[\/field\]|\[ushka=(.*?)\]!is', $text, $all);
    // на какой email отправляем
    $r = preg_match_all('!\\[email=(.*?)\\]!is', $text, $all);
    if ($r) {
        $email = trim(implode(' ', $all[1]));
    } else {
        $email = mso_get_option('admin_email', 'general', '*****@*****.**');
    }
    // тема письма
    $r = preg_match_all('!\\[subject=(.*?)\\]!is', $text, $all);
    if ($r) {
        $subject = trim(implode(' ', $all[1]));
    } else {
        $subject = tf('Обратная связь');
    }
    // куда редиректить после отправки
    $r = preg_match_all('!\\[redirect=(.*?)\\]!is', $text, $all);
    if ($r) {
        $redirect = trim(implode(' ', $all[1]));
    } else {
        $redirect = '';
    }
    // eirf к форме
    $r = preg_match_all('!\\[ushka=(.*?)\\]!is', $text, $all);
    if ($r) {
        $ushka = trim(implode(' ', $all[1]));
    } else {
        $ushka = '';
    }
    // отправить копию на ваш email
    $r = preg_match_all('!\\[nocopy\\]!is', $text, $all);
    if ($r) {
        $forms_subscribe = false;
    } else {
        $forms_subscribe = true;
    }
    // кнопка Сброс формы
    $r = preg_match_all('!\\[noreset\\]!is', $text, $all);
    if ($r) {
        $reset = false;
    } else {
        $reset = true;
    }
    // pr($all);
    // поля формы
    $r = preg_match_all('!\\[field\\](.*?)\\[\\/field\\]!is', $text, $all);
    $f = array();
    // массив для полей
    if ($r) {
        $fields = $all[1];
        /* 
        pr($fields);
        pr($email);
        pr($redirect);
        pr($subject);
        pr($ushka);
        */
        if ($subject) {
            // поле тема письма делаем в виде обязательнного поля select.
            // формируем массив для формы
            $subject_f['require'] = 1;
            //$subject_f['type'] = 'select';
            $subject_f['type'] = mb_strpos($subject, '#') === false ? 'text' : 'select';
            // если это одиночное поле, но при этом текст сабжа начинается
            // с _ то ставим тип hidden
            if ($subject_f['type'] == 'text' and mb_strpos($subject, '_') === 0) {
                $subject = mb_substr($subject . ' ', 1, -1, 'UTF-8');
                $subject_f['type'] = 'hidden';
            }
            $subject_f['description'] = tf('Тема письма');
            //$subject_f['tip'] = t('Выберите тему письма');
            $subject_f['values'] = $subject;
            $subject_f['value'] = $subject;
            $subject_f['default'] = '';
            // преобразования, чтобы сделать ключ для поля
            $f1['subject'] = $subject_f;
            // у поля тема будет ключ subject
            foreach ($f as $key => $val) {
                $f1[$key] = $val;
            }
            $f = $f1;
        }
        $i = 0;
        foreach ($fields as $val) {
            $val = trim($val);
            if (!$val) {
                continue;
            }
            $val = str_replace(' = ', '=', $val);
            $val = str_replace('= ', '=', $val);
            $val = str_replace(' =', '=', $val);
            $val = explode("\n", $val);
            // разделим на строки
            $ar_val = array();
            foreach ($val as $pole) {
                $pole = preg_replace('!=!', '_VAL_', $pole, 1);
                $ar_val = explode('_VAL_', $pole);
                // строки разделены = type = select
                if (isset($ar_val[0]) and isset($ar_val[1])) {
                    $f[$i][$ar_val[0]] = $ar_val[1];
                }
            }
            $i++;
        }
        if (!$f) {
            return '';
        }
        // нет полей - выходим
        // теперь по-идее у нас есть вся необходимая информация по полям и по форме
        // смотрим есть ли POST. Если есть, то проверяем введенные поля и если они корректные,
        // то выполняем отправку почты, выводим сообщение и редиректимся
        // если POST нет, то выводим обычную форму
        // pr($f);
        if ($_POST) {
            $_POST = mso_clean_post(array('forms_antispam1' => 'integer', 'forms_antispam2' => 'integer', 'forms_antispam' => 'integer', 'forms_name' => 'base', 'forms_email' => 'email', 'forms_session' => 'base'));
        }
        if ($post = mso_check_post(array('forms_session', 'forms_antispam1', 'forms_antispam2', 'forms_antispam', 'forms_name', 'forms_email', 'forms_submit'))) {
            mso_checkreferer();
            $out .= '<div class="forms-post">';
            // верный email?
            if (!($ok = mso_valid_email($post['forms_email']))) {
                $out .= '<div class="message error small">' . tf('Неверный email!') . '</div>';
            }
            // антиспам
            if ($ok) {
                $antispam1s = (int) $post['forms_antispam1'];
                $antispam2s = (int) $post['forms_antispam2'];
                $antispam3s = (int) $post['forms_antispam'];
                if ($antispam1s / 984 + $antispam2s / 765 != $antispam3s) {
                    // неверный код
                    $ok = false;
                    $out .= '<div class="message error small">' . tf('Неверная сумма антиспама') . '</div>';
                }
            }
            if ($ok) {
                foreach ($f as $key => $val) {
                    if ($ok and isset($val['require']) and $val['require'] == 1) {
                        if (!isset($post['forms_fields'][$key]) or !$post['forms_fields'][$key]) {
                            $ok = false;
                            $out .= '<div class="message error small">' . tf('Заполните все необходимые поля!') . '</div>';
                        }
                    }
                    if (!$ok) {
                        break;
                    }
                }
            }
            // всё ок
            if ($ok) {
                //pr($post);
                // pr($f);
                // pr($redirect);
                // pr($email);
                // pr($subject);
                // формируем письмо и отправляем его
                if (!mso_valid_email($email)) {
                    $email = mso_get_option('admin_email', 'general', '*****@*****.**');
                }
                // куда приходят письма
                $message = t('Имя: ') . $post['forms_name'] . "\n";
                $message .= t('Email: ') . $post['forms_email'] . "\n";
                foreach ($post['forms_fields'] as $key => $val) {
                    //pr($key);
                    if ($key === 'subject' and $val) {
                        $subject = $val;
                        //pr($subject);
                        continue;
                    }
                    $message .= $f[$key]['description'] . ': ' . $val . "\n\n";
                }
                if ($_SERVER['REMOTE_ADDR'] and $_SERVER['HTTP_REFERER'] and $_SERVER['HTTP_USER_AGENT']) {
                    $message .= "\n" . tf('IP-адрес: ') . $_SERVER['REMOTE_ADDR'] . "\n";
                    $message .= tf('Отправлено со страницы: ') . $_SERVER['HTTP_REFERER'] . "\n";
                    $message .= tf('Браузер: ') . $_SERVER['HTTP_USER_AGENT'] . "\n";
                }
                // pr($message);
                $form_hide = mso_mail($email, $subject, $message, $post['forms_email']);
                if ($forms_subscribe and isset($post['forms_subscribe'])) {
                    mso_mail($post['forms_email'], tf('Вами отправлено сообщение:') . ' ' . $subject, $message);
                }
                $out .= '<div class="message ok small">' . tf('Ваше сообщение отправлено!') . '</div><p>' . str_replace("\n", '<br>', htmlspecialchars($subject . "\n" . $message)) . '</p>';
                if ($redirect) {
                    mso_redirect($redirect, true);
                }
            } else {
                $out .= forms_show_form($f, $ushka, $forms_subscribe, $reset, $subject);
            }
            $out .= '</div>';
            $out .= mso_load_jquery('jquery.scrollto.js');
            $out .= '<script>$(document).ready(function(){$.scrollTo("div.forms-post", 500);})</script>';
        } else {
            $out .= forms_show_form($f, $ushka, $forms_subscribe, $reset, $subject);
        }
    }
    return $out;
}
Beispiel #4
0
function mso_comuser_edit($args = array())
{
    global $MSO;
    if (!isset($args['css_ok'])) {
        $args['css_ok'] = 'comment-ok';
    }
    if (!isset($args['css_error'])) {
        $args['css_error'] = 'comment-error';
    }
    # id комюзера, который в сессии
    if (isset($MSO->data['session']['comuser']) and $MSO->data['session']['comuser']) {
        $id_session = $MSO->data['session']['comuser']['comusers_id'];
    } else {
        $id_session = false;
    }
    if ($post = mso_check_post(array('f_session_id', 'f_submit', 'f_comusers_activate_key'))) {
        # защита рефера
        mso_checkreferer();
        # защита сессии - если не нужно закомментировать строчку!
        if ($MSO->data['session']['session_id'] != $post['f_session_id']) {
            mso_redirect();
        }
        // получаем номер юзера id из f_submit[]
        $id = (int) mso_array_get_key($post['f_submit']);
        if (!$id) {
            return '<div class="' . $args['css_error'] . '">' . tf('Ошибочный номер пользователя') . '</div>';
        }
        # проверяем id в сессии с сабмитом
        // if ($id != $id_session)
        //	return '<div class="' . $args['css_error']. '">'. t('Ошибочный номер пользователя'). '</div>';
        $f_comusers_activate_key = trim($post['f_comusers_activate_key']);
        if (!$f_comusers_activate_key) {
            return '<div class="' . $args['css_error'] . '">' . tf('Неверный (пустой) ключ') . '</div>';
        }
        // нужно проверить если у указанного комюзера не равные ключи
        // если они равны, то ничего не делаем
        $CI =& get_instance();
        $CI->db->select('comusers_activate_string, comusers_activate_key');
        $CI->db->from('comusers');
        $CI->db->where('comusers_id', $id);
        $CI->db->limit(1);
        $query = $CI->db->get();
        if ($query->num_rows() > 0) {
            $comuser = $query->result_array();
            // данные комюзера
            if ($comuser[0]['comusers_activate_string'] == $comuser[0]['comusers_activate_key']) {
                // уже равны, активация не требуется
                return '<div class="' . $args['css_ok'] . '">' . tf('Активация уже выполнена') . '</div>';
            } else {
                // ключи в базе не равны
                // сверяем с переданным ключом из формы
                if ($f_comusers_activate_key == $comuser[0]['comusers_activate_key']) {
                    // верный ключ - обновляем в базе
                    $CI->db->where('comusers_id', $id);
                    $res = $CI->db->update('comusers', array('comusers_activate_string' => $f_comusers_activate_key)) ? '1' : '0';
                    $CI->db->cache_delete_all();
                    if ($res) {
                        return '<div class="' . $args['css_ok'] . '">' . tf('Активация выполнена!') . '</div>';
                    } else {
                        return '<div class="' . $args['css_error'] . '">' . tf('Ошибка БД при добавления ключа активации') . '</div>';
                    }
                } else {
                    return '<div class="' . $args['css_error'] . '">' . tf('Ошибочный ключ активации') . '</div>';
                }
            }
        } else {
            // вообще нет такого комюзера
            return '<div class="' . $args['css_error'] . '">' . tf('Ошибочный номер пользователя') . '</div>';
        }
    } elseif ($post = mso_check_post(array('flogin_session_id', 'flogin_submit', 'flogin_user', 'flogin_password', 'flogin_redirect'))) {
        // логинимся через стандартную _mso_login()
        _mso_login();
        return;
    } elseif ($post = mso_check_post(array('f_session_id', 'f_submit', 'f_comusers_email', 'f_comusers_password', 'f_comusers_nik', 'f_comusers_url', 'f_comusers_icq', 'f_comusers_msn', 'f_comusers_jaber', 'f_comusers_date_birth', 'f_comusers_description', 'f_comusers_avatar_url'))) {
        if (!is_login_comuser()) {
            return '<div class="' . $args['css_error'] . '">' . tf('Ошибочные данные пользователя') . '</div>';
        }
        # защита рефера
        mso_checkreferer();
        # защита сессии - если не нужно закомментировать строчку!
        if ($MSO->data['session']['session_id'] != $post['f_session_id']) {
            mso_redirect();
        }
        // получаем номер юзера id из f_submit[]
        $id = (int) mso_array_get_key($post['f_submit']);
        if (!$id) {
            return '<div class="' . $args['css_error'] . '">' . tf('Ошибочный номер пользователя') . '</div>';
        }
        # проверяем id в сессии с сабмитом
        if ($id != $id_session) {
            return '<div class="' . $args['css_error'] . '">' . tf('Ошибочный номер пользователя') . '</div>';
        }
        $f_comusers_email = trim($post['f_comusers_email']);
        $f_comusers_password = trim($post['f_comusers_password']);
        if (!$f_comusers_email or !$f_comusers_password) {
            return '<div class="' . $args['css_error'] . '">' . tf('Необходимо указать email и пароль') . '</div>';
        }
        // проверим есть ли такой комюзер
        $CI =& get_instance();
        $CI->db->select('*');
        $CI->db->from('comusers');
        # CodeIgniter экранирует where, даже когда только условия в полях
        $CI->db->where('comusers_activate_string=comusers_activate_key', '', false);
        // активация должна уже быть
        $CI->db->where(array('comusers_id' => $id, 'comusers_email' => $f_comusers_email, 'comusers_password' => $f_comusers_password));
        $CI->db->limit(1);
        $query = $CI->db->get();
        if ($query->num_rows() > 0) {
            // все ок - логин пароль верные
            $comuser = $query->result_array();
            // данные комюзера
            $f_comusers_avatar_url = mso_strip($post['f_comusers_avatar_url'], false, array('\\', '|', '?', '%', '*', '`'));
            $allowed_ext = array('gif', 'jpg', 'jpeg', 'png');
            // разрешенные типы
            $ext = strtolower(str_replace('.', '', strrchr($f_comusers_avatar_url, '.')));
            // расширение файла
            if (!in_array($ext, $allowed_ext)) {
                $f_comusers_avatar_url = '';
            }
            // запрещенный тип файла
            if (!isset($post['f_comusers_notify'])) {
                $post['f_comusers_notify'] = '0';
            }
            if (!isset($post['f_comusers_skype'])) {
                $post['f_comusers_skype'] = '';
            }
            // скайп
            $post = mso_clean_post(array('f_comusers_nik' => 'base', 'f_comusers_url' => 'base', 'f_comusers_icq' => 'base', 'f_comusers_msn' => 'base', 'f_comusers_jaber' => 'base', 'f_comusers_skype' => 'base', 'f_comusers_date_birth' => 'base', 'f_comusers_description' => 'base', 'f_comusers_notify' => 'int'), $post);
            $upd_date = array('comusers_nik' => strip_tags($post['f_comusers_nik']), 'comusers_url' => strip_tags($post['f_comusers_url']), 'comusers_icq' => strip_tags($post['f_comusers_icq']), 'comusers_msn' => strip_tags($post['f_comusers_msn']), 'comusers_jaber' => strip_tags($post['f_comusers_jaber']), 'comusers_skype' => strip_tags($post['f_comusers_skype']), 'comusers_date_birth' => strip_tags($post['f_comusers_date_birth']), 'comusers_description' => strip_tags($post['f_comusers_description']), 'comusers_avatar_url' => $f_comusers_avatar_url, 'comusers_notify' => $post['f_comusers_notify']);
            # pr($upd_date );
            $CI->db->where('comusers_id', $id);
            $res = $CI->db->update('comusers', $upd_date) ? '1' : '0';
            // если переданы метаполя, то обновляем и их
            if (isset($post['f_comusers_meta']) and $post['f_comusers_meta']) {
                //pr($post);
                foreach ($post['f_comusers_meta'] as $key => $val) {
                    // вначале грохаем если есть такой ключ
                    $CI->db->where('meta_table', 'comusers');
                    $CI->db->where('meta_id_obj', $id);
                    $CI->db->where('meta_key', $key);
                    $CI->db->delete('meta');
                    // теперь добавляем как новый
                    $ins_data = array('meta_table' => 'comusers', 'meta_id_obj' => $id, 'meta_key' => $key, 'meta_value' => $val);
                    $CI->db->insert('meta', $ins_data);
                }
            }
            $CI->db->cache_delete_all();
            // mso_flush_cache(); // сбросим кэш
            if ($res) {
                return '<div class="' . $args['css_ok'] . '">' . tf('Обновление выполнено!') . '</div>';
            } else {
                return '<div class="' . $args['css_error'] . '">' . tf('Ошибка БД при обновлении') . '</div>';
            }
        } else {
            return '<div class="' . $args['css_error'] . '">' . tf('Ошибочный email и пароль') . '</div>';
        }
    }
    // обновление формы
}