在我的网站上,我有一个注册表格供新用户唱歌。
当我注册一个帐户,或者当我的朋友尝试它时,该过程成功并且数据入到数据库中。
问题在于,当来自世界各地的其他人注册帐户时,大部分时间都会发生这种情况:
1)该过程成功,没有抛出任何错误。
但是
2)没有数据插入到数据库中。
数据库连接是通过以下方式创建的:
// Connecting to the database
$database = new mysqli($DatabaseServer, $DatabaseUser, $DatabasePass, $DatabaseName);
在注册过程中,数据通过以下方式插入:
$stmt = $database->prepare("INSERT INTO `users` (`username`, `password`, `email`, `email_activation_code`, `name`, `active`, `ip`, `date`) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param('ssssssss', $_POST['username'], $password, $_POST['email'], $email_code, $_POST['name'], $active, $_SERVER['REMOTE_ADDR'], $date);
$result = $stmt->execute();
$stmt->close();
到目前为止,我已经尝试过:
- 使用VPN从多个位置注册,并从不同的物理位置注册,都成功了。
- 我已经记录了注册失败时使用的数据(具有用户的权限)。
没有什么奇怪的,当我使用他的数据时,我可以完美地注册一个帐户。
在执行此操作时,我们俩都在同一时间尝试了它,而我打开了数据库,因此我确信数据库当时正在运行(或者由于缺少连接而应该引发错误)。
- 我试图做一个日志,结果什么都没有(因为没有抛出任何错误)。
-使用“尝试捕获”的正常错误捕获也会导致任何结果,因为同样,不会抛出任何错误。$stmt->error_list
在将数据库更新到 mariadb 10.3.20 后,我注意到了这个问题。它现在在版本 10.3.22 上。
我现在不知道该去哪里寻找了,因为只有一部分注册过程失败了。
任何要研究的方向都是值得赞赏的。
尚方宝剑之说