第56批:checkEmailSuffix移至core.php共享(register/account可直接调用)

This commit is contained in:
ypsdf1
2026-10-25 18:57:49 +08:00
parent 80c4073445
commit 716d43b8c2
2 changed files with 33 additions and 26 deletions
+1 -26
View File
@@ -5109,33 +5109,8 @@ function checkPendingWebEmailBindRequests() {
success(['requests' => $requests, 'count' => count($requests)]); success(['requests' => $requests, 'count' => count($requests)]);
} }
// ===== 第56批:邮箱后缀校验(与Java端ConfigManager.isEmailSuffixAllowed逻辑一致)=====
function checkEmailSuffix($email) {
$db = getDB();
$cfgRow = $db->query("SELECT mode, suffix_list FROM email_suffix_config WHERE id = 1")->fetchArray(SQLITE3_ASSOC);
if (!$cfgRow) return true; // 无配置=默认模式=不校验
$mode = (string)$cfgRow['mode'];
$suffixList = (string)$cfgRow['suffix_list'];
if ($mode === '默认' || $suffixList === '') return true;
$suffix = '';
$atIdx = strpos($email, '@');
if ($atIdx !== false && $atIdx < strlen($email) - 1) {
$suffix = strtolower(trim(substr($email, $atIdx + 1)));
}
$suffixes = preg_split('/[,;\\n]+/', $suffixList);
$found = false;
foreach ($suffixes as $s) {
$t = strtolower(trim($s));
if ($t !== '' && $t === $suffix) { $found = true; break; }
}
if ($mode === '白名单') return $found;
if ($mode === '黑名单') return !$found;
return true;
}
// ===== 第53批:插件回传游戏内玩家对邮箱绑定请求的处理结果(SECRET_KEY认证)===== // ===== 第53批:插件回传游戏内玩家对邮箱绑定请求的处理结果(SECRET_KEY认证)=====
// 注:checkEmailSuffix() 已移至 core.php 共享(第56批)
function webEmailBindResult() { function webEmailBindResult() {
$secret = getParam('secret'); $secret = getParam('secret');
if (!$secret || $secret !== SECRET_KEY) { if (!$secret || $secret !== SECRET_KEY) {
+32
View File
@@ -2796,6 +2796,38 @@ function getParam($key, $default = null) {
return $default; return $default;
} }
// ===== 第56批:邮箱后缀校验(与Java端ConfigManager.isEmailSuffixAllowed逻辑一致)=====
// 白名单模式:仅允许列表中的后缀;黑名单模式:禁止列表中的后缀;默认模式:不校验
// 配置由 Java 端推送(push_player_login_status),存于 email_suffix_config 表
function checkEmailSuffix($email) {
$db = getDB();
try {
$cfgRow = $db->query("SELECT mode, suffix_list FROM email_suffix_config WHERE id = 1")->fetchArray(SQLITE3_ASSOC);
} catch (\Throwable $e) {
return true; // 表不存在/异常=默认模式=不校验
}
if (!$cfgRow) return true;
$mode = (string)$cfgRow['mode'];
$suffixList = (string)$cfgRow['suffix_list'];
if ($mode === '默认' || $suffixList === '') return true;
$suffix = '';
$atIdx = strpos($email, '@');
if ($atIdx !== false && $atIdx < strlen($email) - 1) {
$suffix = strtolower(trim(substr($email, $atIdx + 1)));
}
$suffixes = preg_split('/[,;\\n]+/', $suffixList);
$found = false;
foreach ($suffixes as $s) {
$t = strtolower(trim($s));
if ($t !== '' && $t === $suffix) { $found = true; break; }
}
if ($mode === '白名单') return $found;
if ($mode === '黑名单') return !$found;
return true;
}
function requireToken($purpose = 'general') { function requireToken($purpose = 'general') {
$token = getParam('token'); $token = getParam('token');
if (!$token) { if (!$token) {