RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1444633
Accepted
Ian Markov
Ian Markov
Asked:2022-09-01 11:57:09 +0000 UTC2022-09-01 11:57:09 +0000 UTC 2022-09-01 11:57:09 +0000 UTC

Modx - 通过登录包同时在两个数据库中注册和更改密码

  • 772

刚开始使用Modx。
我按照说明通过登录包设置了用户的注册和授权https://itchief.ru/modx/login-registration
在网站上注册成功。但我需要,除了在网站本身上注册,还需要到另一个数据库(游戏)。

现在看起来太复杂了:

  1. 用户在网站上注册一个帐户;
  2. 进入信用证;
  3. 在个人账号中去链接注册一个游戏账号。

使用单独的代码段实现游戏帐户的注册:

<?php
//Подключение к игровой БД 
if(!@mysql_connect('127.0.0.1','user','pswd') || !@mysql_select_db('db_name')) 
    echo "<div class='callout callout-danger'>
                <h4>Сторонние силы вмешались в процесс!</h4>
          </div>"; 
else {
$trules = 
'<form name="reg_rules" method="post" action=""> 
            <div class="callout callout-info">
                <h4><i class="icon fa fa-info"></i> Прочти перед регистрацией!</h4>

                <p>Текст</p>
            </div>
                
            <input type="hidden" name="step" value="2"> 
            <input type="checkbox" name="rules"> Согласен<br>
            <center><input type="submit" value="Далее" class="btn btn-block btn-success"> </center>
</form>'; 
$tform = 
'<form name="reg_form" method="post" action="">
      <div class="form-group has-feedback">
        <input placeholder="Логин" name="login" type="text" class="form-control" maxlength="14">  
        <span class="glyphicon glyphicon-user form-control-feedback"></span>
      </div>
      <div class="form-group has-feedback">
        <input name="email" placeholder="Email" type="text" class="form-control"> 
        <span class="glyphicon glyphicon-envelope form-control-feedback"></span>
      </div>
      <div class="form-group has-feedback">
        <input name="pass" placeholder="Пароль" type="password" class="form-control" maxlength="16"> 
        <span class="glyphicon glyphicon-lock form-control-feedback"></span>
      </div>
      <div class="form-group has-feedback">
        <input name="repass" placeholder="Повтор пароля" type="password" class="form-control" maxlength="16"> 
        <span class="glyphicon glyphicon-log-in form-control-feedback"></span>
      </div>
      
              
        <input type="hidden" name="step" value="3">
        <center><input type="submit" value="Создать" class="btn btn-block btn-success"></center>
</form>'; 

$step = $_POST['step']; 

if (isset($_POST['step'])){ 
switch ($step){ 
case '2':{ 
$rules = $_POST['rules']; 
if ($rules == "on") 
//На шаге 2 выводится форма, если пользователь согласен с правилами 
$centertext = $tform; 
else 
//Если не согласен 
$centertext = '
<div class="callout callout-warning">
                <h4>Что-то не так!</h4>

                <p>Регистрация невозможна без согласия с правилами сервера!</p>
              </div>
<center><input type="button" onclick="history.back(-2); return false;" value="Назад" class="btn btn-block btn-success"></center>
'; 
break; 
} 
case '3':{ 
if ((isset($_POST['login']))AND(isset($_POST['pass']))AND(isset($_POST['repass']))AND(isset($_POST['email']))){ 
$login = $_POST['login']; 
$pass = $_POST['pass']; 
$repass = $_POST['repass']; 
$email = $_POST['email']; 
$ip = $_SERVER["REMOTE_ADDR"];

if(strlen($login) < 6 or strlen($login) > 16) 
$err[] = '<div class="callout callout-warning"><p>Минимальная длинна логина - 6 символов. Максимальная длина логина - 16 символов</p></div>'; 
if(strlen($pass) < 8 or strlen($pass) > 16) 
$err[] = '<div class="callout callout-warning"><p>Минимальная длинна пароля - 8 символов. Максимальная длина пароля - 16 символов</p></div>'; 
if($pass==$login) 
$err[] = '<div class="callout callout-warning"><p>Не разрешено использовать одинаковые логин и пароль</p></div>'; 
if($pass!=$repass) 
$err[] = '<div class="callout callout-warning"><p>Введенные пароли не совпадают</p></div>'; 
if(!preg_match("/^[A-Za-z0-9]{6,}$/",$login)) 
$err[] = '<div class="callout callout-warning"><p>Логин содержит запрещенные символы.</p></div>'; 
if(!preg_match("/^[A-Za-z0-9]{6,}$/",$pass)) 
$err[] = '<div class="callout callout-warning"><p>Пароль содержит запрещенные символы.</p></div>';
if(!eregi("^[a-zA-Z0-9]+[_a-zA-Z0-9-]*(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,4})$", $email)) 
$err[] = '<div class="callout callout-warning"><p>Не правильный формат адреса электронной почты</p></div>'; 
if (preg_match('/[а-я]/i', $pass))
$err[]  = '<div class="callout callout-warning"><p>Пароль не может содержать кириллицу</p></div>';
if (preg_match('/[а-я]/i', $login))
$err[]  = '<div class="callout callout-warning"><p>Логин не может содержать кириллицу</p></div>';

if ($err!='') 
$centertext = implode('', $err); 
} 
else{ 
$centertext = '<div class="callout callout-warning"><p>Не заполнены все обязательные поля.</p></div>'; 
} 
if ($centertext ==""){ 

$db = mysql_pconnect('127.0.0.1','user','pswd'); 
mysql_query('SET CHARACTER SET utf8mb4'); 
mysql_select_db('db_name'); 
$result = mysql_query("SELECT login FROM `accounts` WHERE login='$login'"); 
if(mysql_num_rows($result)==0){ 
$gamepass = base64_encode(hash('whirlpool', $pass, true)); 
mysql_query("INSERT INTO accounts(login, password, lastactive, accessLevel, lastIP, lastServerID, l2email) VALUES('".$login."' , '".$gamepass."', '1', '0', '".$ip."', '1', '".$email."');") or die(mysql_error()); 
$centertext = "Добро пожаловать. Аккаунт $login успешно создан."; 
} 
else{ 
$centertext = "К сожалению этот логин уже занят."; 
} 
} 
break; 
} 
default:{ 
$centertext = ""; 
} 
} 
} 
if ($centertext == "") 
$centertext = $trules; 
echo $centertext;
}    

我想进行一次注册,以便在网站上创建帐户时,立即创建一个游戏帐户。因此,在更改帐户密码时,游戏帐户的密码也会更改。

但是我不知道如何以及在哪里更改登录包代码以添加与游戏数据库的连接,并且注册和更改密码时的数据已写入游戏数据库。

请帮忙。

php
  • 1 1 个回答
  • 30 Views

1 个回答

  • Voted
  1. Best Answer
    Anton Tarasov
    2022-09-01T12:27:19Z2022-09-01T12:27:19Z

    尝试使用&postHooks参数:指定片段的名称,该片段在主库中注册后,也会在自定义库中注册。当然,所有的逻辑都必须写在代码片段中,如何使用它们,例如,你可以在这里看到:https ://docs.modx.com/current/en/extras/login/login.tutorials/ using-pre-and-post-hooks#switchsettings posthooks在注册后立即执行,也preHooks有,在主注册前触发,但在字段验证后,突然也会因为其他原因派上用场。

    • 0

相关问题

  • mysqli 类的对象无法转换为字符串

  • 您的系统中缺少 ext-http *,您的系统中缺少 ext-mysql_xdevapi *

  • 如何从csv中删除bom?

  • 当我按下 Enter 键时,如何让 PhpStorm 的 Emmet 插件触发,就像 VS Code 一样?

  • 注释在 Symfony5 中不起作用

  • 搜索最近的地理位置点

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5