使用Submit按钮通过PHPBB更新MySQL数据库?

使用Submit按钮通过PHPBB更新MySQL数据库?,php,mysql,phpbb3,Php,Mysql,Phpbb3,我将phpbb集成到我的网站中,我需要做一些更改。我正试图通过“提交”按钮从另一个数据库更新我的数据库条目。 在我的数据库中,我有两个表。第一个名为“用户”的表 第二个名为“服务器”,我有以下内容: id name 1 USA 2 EUROPE 3 GLOBAL 现在,因为我改为phpbb(我以前有一个普通的php系统登录),所以我必须改变这一点: if (isset($_POST['joinglobal'])) { /* * -----------

我将phpbb集成到我的网站中,我需要做一些更改。我正试图通过“提交”按钮从另一个数据库更新我的数据库条目。 在我的数据库中,我有两个表。第一个名为“用户”的表

第二个名为“服务器”,我有以下内容:

id   name
1    USA
2    EUROPE
3    GLOBAL
现在,因为我改为phpbb(我以前有一个普通的php系统登录),所以我必须改变这一点:

if (isset($_POST['joinglobal'])) {

      /*
    * -------------------------------------------------------------------------------
    *   Securing against Header Injection
    * -------------------------------------------------------------------------------
    */

    foreach($_POST as $key => $value){

        $_POST[$key] = _cleaninjections(trim($value));
    }

    require '../../assets/setup/db.inc.php';
     /*
        * -------------------------------------------------------------------------------
        *   User Joins
        * -------------------------------------------------------------------------------
        */
        $sql = "UPDATE phpbb5u_users AS u CROSS JOIN server AS s SET u.server = s.id WHERE u.user_id = ? AND s.name = 'GLOBAL'";
        $stmt = mysqli_stmt_init($conn);
        if (!mysqli_stmt_prepare($stmt, $sql)) {

            $_SESSION['ERRORS']['scripterror'] = 'SQL ERROR';
            header("Location: ../");
            exit();
        } 
        else {
            mysqli_stmt_bind_param($stmt, "i", $_SESSION['user_id']); }
            mysqli_stmt_execute($stmt);
            mysqli_stmt_store_result($stmt);
       
        $_SESSION['STATUS']['joinstatus'] = 'Joined to GLOBAL';
            header("Location: ../");
            exit();
        mysqli_stmt_close($stmt);
        mysqli_close($conn);
}
    
    else {

    header("Location: ../");
    exit();
}
我的标题中已包含此内容:

<?php
define('IN_PHPBB', true);
$phpbb_root_path = 'forum/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();
?>

注意:该接口明显不太冗长,使代码更易于阅读和审核,并且不容易与过时的
mysql\u查询
接口混淆,因为缺少单个
i
可能会导致问题。使用这种风格:
$db=newmysqli(…)
$db->prepare(“…”)
过程接口是PHP4时代的产物,不应在新代码中使用。此外,过程接口没有那么严格的错误检查和报告,阻碍了调试工作。此外:这种“针对头注入的安全保护”代码可能是垃圾。在100个案例中,有99个只是在你的价值观上挥舞着魔杖,并称之为“安全”,但没有任何用处。看到
交叉连接是不寻常的。通常,您会看到
左连接
右连接
或在极少数情况下
外部连接
,但
交叉连接
仍然是一种罕见的情况。如果您想在更新之前拒绝无效的服务器名称,这看起来像是
左连接
右连接
的直接例子。提示:许多问题都可以通过检测和解决,因此简单错误导致的错误不容易被忽略。毫无例外,您必须密切关注返回值,其中许多表示您必须解决或向用户报告的问题。异常允许更复杂的流控制,因为它们可以“冒泡”到代码的其他部分,以便更方便地处理它们。如果服务器名称有一个占位符值,并且输入值一致,例如数据库中的
EUROPE
value=“EUROPE”,则解决这一问题会容易得多
在表单上。这是一种选择吗?如果是这样,只需将该列绑定到该值即可。
<?php
define('IN_PHPBB', true);
$phpbb_root_path = 'forum/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();
?>
<button class="btn btn-primary btn-lg" type="submit" value="joineurope" name='joineurope'>Join NOW!</button>
$submit = request_var('submit', '');
if($submit)
{
    
        $serverid = $user->data['server'];
        $sql_ary = array (
            "server"   => 3 );
        
        $sql = 'UPDATE ' . phpbb5u_users . '
        SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
        WHERE user_id = ' . (int) $user_id;
        $db->sql_query($sql);
}