GameCMS добавление новых пунктов при регистрации

Сообщения
9
Реакции
0
Всем привет. Решил немного изменить регистрацию, добавить при регистрации Ник на сервере и SteamID. Но регистрация не работает. В чем может быть проблема?

В top.tpl оформил это подобным образом:
PHP:
<div id="registration" class="modal fade">
<div class="modal-dialog modal-sm">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title">Регистрация</h4>
</div>
<div class="modal-body">
<form id="user_registration" class="registration">
<input type="text" maxlength="30" class="form-control" id="reg_login" placeholder="Логин">
<input type="password" maxlength="15" class="form-control" id="reg_password" placeholder="Пароль">
<input type="password" maxlength="15" class="form-control" id="reg_password2" placeholder="Повторите пароль">
<input type="nick" maxlength="15" class="form-control" id="nick" placeholder="Ваш ник на сервере">
<input type="steam_id" maxlength="15" class="form-control" id="steam_id" placeholder="Steam ID">
<input type="email" maxlength="255" class="form-control" id="reg_email" placeholder="E-mail {if($conf->conf_us == 1)}(Указывайте настоящий e-mail!){/if}">

{if($conf->privacy_policy == 1)}
<a class="privacy-policy" href="../processing-of-personal-data" target="_blank">Регистрируясь на данном сайте, Вы выражаете согласие на обработку персональных данных</a>
{/if}

{if($conf->captcha != '2')}
<div style="transform:scale(0.75);-webkit-transform:scale(0.75);transform-origin:0 0;-webkit-transform-origin:0 0;" data-theme="light" class="g-recaptcha clearfix" data-sitekey="{{$conf->captcha}}"></div>
<script src='https://www.google.com/recaptcha/api.js?hl=ru'></script>
{/if}

<div id="result2"></div>

<button type="submit" class="btn btn-primary btn-block mt-2">Зарегистрироваться</button>

{if($auth_api->vk_api == 1)}
<a class="btn btn-outline-primary" onclick="$('#registration').modal('hide'); show_reg_modal('vk');" title="Зарегистрироваться через Вконтакте"><i class="m-icon icon-vk"></i></a>
{/if}
{if($auth_api->steam_api == 1)}
<a class="btn btn-outline-primary" onclick="$('#registration').modal('hide'); show_reg_modal('steam');" title="Зарегистрироваться через Steam"><i class="m-icon icon-steam"></i></a>
{/if}
{if($auth_api->fb_api == 1)}
<a class="btn btn-outline-primary" onclick="$('#registration').modal('hide'); show_reg_modal('fb');" title="Зарегистрироваться через Facebook"><i class="m-icon icon-fb"></i></a>
{/if}
</form>
<script> send_form('#user_registration', 'registration();'); </script>
</div>
</div>
</div>
</div>
В actions.php
PHP:
/* Регистрация нового пользователя
=========================================*/
if(isset($_POST['registration'])) {
if(!configs()->standard_registration) {
exit('<p class="text-danger">Данный способ регистрации отключен!</p>');
}

if(!validateCaptcha($_POST["captcha"])) {
exit('<p class="text-danger">Неверно введена капча!</p>');
}

$login = check($_POST['login'], null);
$password = check($_POST['password'], null);
$password2 = check($_POST['password2'], null);
$nick = check($_POST['nick'], null);
$steam_id = check($_POST['steam_id'], null);
$email = check($_POST['email'], null);

if(empty($login) or empty($password) or empty($password2) or empty($nick) or empty($steam_id) or empty($email)) {
exit('<p class="text-danger">Вы ввели не всю информацию. Заполните все поля!</p>');
}

$U = new Users($pdo);

if(!$U->check_to_flood($conf->captcha)) {
exit('<p class="text-danger">Вы слишком часто регистрируете аккаунты!</p>');
}
if(!$U->check_login_length($login)) {
exit('<p class="text-danger">Логин должен состоять не менее чем из 3 символов и не более чем из 30.</p>');
}
if(!$U->check_login_composition($login)) {
exit('<p class="text-danger">В логине разрешается использовать только буквы и цифры.</p>');
}
if(!$U->check_login_busyness($login)) {
exit('<p class="text-danger">Введенный Вами логин уже зарегистрирован!</p>');
}

if(!$U->check_password_length($password)) {
exit('<p class="text-danger">Пароль должен состоять не менее чем из 6 символов и не более чем из 15.</p>');
}
if($password != $password2) {
exit('<p class="text-danger">Введенные пароли не совпадают</p>');
}
$password = $U->convert_password($password, $conf->salt);

if(!$U->check_email($email)) {
exit('<p class="text-danger">Неверно введен E-mail!</p>');
}
if(!$U->check_email_busyness($email)) {
exit('<p class="text-danger">Введенный Вами E-mail уже зарегистрирован!</p>');
}

$user = $U->entry_user($login, $password, $nick, $steam_id, $email, $conf->conf_us);

if(!empty($user->id)) {
$answer = $U->after_registration_actions($SC, $conf->salt, $conf->name, $user->id, $full_site_host);

if($answer['message'] != 'error') {
echo '<p class="text-success">'.$answer['message'].'</p>';
sendmail($email, $answer['letter']['subject'], $answer['letter']['message'], $pdo);
}

exit();
} else {
exit('<p class="text-danger">Ошибка! Вы не зарегистрированы</p>');
}
}
в ajax-user.js
Код:
var token=$('#token').val();var login=$('#reg_login').val();var password=$('#reg_password').val();var password2=$('#reg_password2').val();var nick=$('#reg_nick').val();var steam_id=$('#reg_steam_id').val();var email=$('#reg_email').val();login=encodeURIComponent(login);password=encodeURIComponent(password);password2=encodeURIComponent(password2);nick=encodeURIComponent(nick);steam_id=encodeURIComponent(steam_id);email=encodeURIComponent(email);$.ajax({type:"POST",url:"../ajax/actions.php",data:"phpaction=1&token="+token+"&registration=1&login="+login+"&password="+password+"&password2="+password2+"&nick="+nick+"&steam_id="+steam_id+"&email="+email+"&captcha="+captcha,success:function(html){if(typeof grecaptcha!="undefined"){grecaptcha.reset();}
Сайт: https://typicalgame.ru/
 
Сообщения
33
Реакции
1
Помог
1 раз(а)
Не забудь изменения занести в мобильный шаблон, когда решите проблему.
 
Сообщения
9
Реакции
0
zhorzh78, вопрос, это нужно в данный public добавить? так как я не нахожу подобной строки в данном файле
PHP:
public function after_registration_actions($SC, $salt, $site_name, $userId, $full_site_host) {
        incNotifications();

        $user = self::getUserData($this->pdo, $userId);

        if(empty($user->id)) {
            $answer['message'] = 'error';
            return $answer;
        }

        if($user->active == 1) {
            if($user->id == 1) {
                $STH = $this->pdo->prepare("UPDATE `users` SET `rights`=:rights WHERE `id`='$user->id' LIMIT 1");
                $STH->execute(array('rights' => '1'));
                $user->rights = 1;
            }

            $this->auth_user($SC, $user->protect, $user->password, $user->login, $user->id, $user->rights, $user->multi_account);
            welcome_noty($this->pdo, $user->login, $user->id);

            $ES = new EventsRibbon($this->pdo);
            $ES->new_user($user->id, $user->login);

            if($user->invited != 0) {
                $noty = new_referal($user->id, $user->login);
                send_noty($this->pdo, $noty, $user->invited, 2);
            }

            $answer['letter']  = reg_letter($site_name, $user->login);
            $answer['message'] = '<script>reset_page();</script>';
        } else {
            welcome_noty($this->pdo, $user->login, $user->id);

            $code = $this->convert_password($user->login, $salt);
            $link = $full_site_host."?id=".$user->id."&key=".$code;

            $answer['letter']  = reg_letter_with_key($site_name, $user->login, $link);
            $answer['message'] = 'Вы успешно зарегистрированы! Инструкция по активации аккаунта указана в письме, которое мы выслали на Ваш e-mail';
        }

        write_log("Зарегистрирован новый пользователь: ID ".$user->id);

        return $answer;
    }
7 Апр 2023
l3ound, это я знаю, спасибо
 
Сообщения
333
Реакции
290
Помог
9 раз(а)
serega31, А то, что в первом посте вы указали, то сами делали? Ибо, не похоже..

$user = $U->entry_user($login, $password, $nick, $steam_id, $email, $conf->conf_us);
==
public function entry_user в class.users.php
 
Сообщения
9
Реакции
0
zhorzh78, я извиняюсь, но ничего не работает или я неправильно делаю
PHP:
public function entry_user(
        $login,
        $password,
        $email,
        $active,
        $vk = null,
        $vk_api = null,
        $fb = null,
        $fb_api = null,
        $steam_id = null,
        $steam_api = null,
        $avatar = null,
        $birth = null
       
        $user = $U->entry_user($login, $password, $nick, $steam_id, $email, $conf->conf_us);
    ) {
        $invited = $this->check_inviting();
        $regdate = date("Y-m-d H:i:s");

        if($active == 2) {
            $active = 1;
        } elseif($active == 1) {
            $active = 0;
        }

        if(empty($avatar)) {
            $avatar = "files/avatars/no_avatar.jpg";
        }
        if(empty($birth)) {
            $birth = '1960-01-01';
        }
        if(empty($vk)) {
            $vk = '---';
        }
        if(empty($vk_api)) {
            $vk_api = 0;
        }
        if(empty($fb)) {
            $fb = 0;
        }
        if(empty($fb_api)) {
            $fb_api = 0;
        }
        if(empty($steam_id)) {
            $steam_id = 0;
        }
        if(empty($steam_api)) {
            $steam_api = 0;
        }

        if($password == "none") {
            $password .= "_".crate_pass(10, 2);
        }

        if(empty($_SERVER['HTTP_USER_AGENT'])) {
            $_SERVER['HTTP_USER_AGENT'] = 'undefined';
        }

        $browser = md5($_SERVER['HTTP_USER_AGENT']);
        $ip      = get_ip();

        $STH = $this->pdo->query("SELECT `stand_rights`, `stand_balance` FROM `config__secondary` LIMIT 1");
        $STH->setFetchMode(PDO::FETCH_OBJ);
        $row      = $STH->fetch();
        $rights   = $row->stand_rights;
        $shilings = $row->stand_balance;

        $STH = $this->pdo->prepare("INSERT INTO users (login,password,email,avatar,regdate,birth,rights,active,shilings,invited,signature,ip,browser,steam_id,steam_api,vk,vk_api,fb,fb_api) VALUES (:login, :password, :email, :avatar, :regdate, :birth, :rights, :active, :shilings, :invited, :signature, :ip, :browser, :steam_id, :steam_api, :vk, :vk_api, :fb, :fb_api)");
        $STH->execute(
            [
                'login'     => $login,
                'password'  => $password,
                'email'     => $email,
                'avatar'    => $avatar,
                'regdate'   => $regdate,
                'birth'     => $birth,
                'rights'    => $rights,
                'active'    => $active,
                'shilings'  => $shilings,
                'invited'   => $invited,
                'signature' => '',
                'ip'        => $ip,
                'browser'   => $browser,
                'steam_id'  => $steam_id,
                'steam_api' => $steam_api,
                'vk'        => $vk,
                'vk_api'    => $vk_api,
                'fb'        => $fb,
                'fb_api'    => $fb_api
            ]
        );

        return $this->getUserByLoginPassword($login, $password);
    }
 
Сообщения
9
Реакции
0
zhorzh78, я сделал все Вами написанное, если установить регистрацию без подтверждения почты, то кнопка Регистрации не работает, а если же выставить с подтверждением почты, регистрация проходит, но данные все равно не добавляются
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу