v1.0.38: 邮箱/国内手机号/身份证正则格式校验 - 后端validate.php(接入person add/update、duplicate_check账号校验、soft_update、hard_add/convert)前端common.js三函数+person/media/fragment表单提交校验

This commit is contained in:
nanguaboss
2026-08-09 22:58:36 +08:00
parent 4ff4349ef5
commit 3a5cdcdd36
12 changed files with 112 additions and 1 deletions
+5
View File
@@ -10,6 +10,7 @@ require_once __DIR__ . '/../common/db.php';
require_once __DIR__ . '/../common/response.php';
require_once __DIR__ . '/../common/auth.php';
require_once __DIR__ . '/../common/logger.php';
require_once __DIR__ . '/../common/validate.php';
checkAjax();
checkPermission('preliminary');
@@ -30,6 +31,10 @@ if ($sourceChannel === '') {
$sourceChannel = '手动录入';
}
// 格式校验:手机 / 邮箱
checkFieldFormat('phone', $phone);
checkFieldFormat('email', $email);
// 至少有一项内容才能录为碎片
if ($companyName === '' && $personName === '' && $phone === '' && $email === '' && $category === '' && $description === '') {
Response::error('请至少填写一项内容', 400);
+5
View File
@@ -12,6 +12,7 @@ require_once __DIR__ . '/../common/auth.php';
require_once __DIR__ . '/../common/logger.php';
require_once __DIR__ . '/../common/completeness.php';
require_once __DIR__ . '/../common/duplicate_check.php';
require_once __DIR__ . '/../common/validate.php';
checkAjax();
checkPermission('preliminary');
@@ -45,6 +46,10 @@ $sourceChannel = $frag['source_channel'] ?? null;
$convertedId = 0;
// 格式校验:手机 / 邮箱
checkFieldFormat('phone', $phone);
checkFieldFormat('email', $email);
// 唯一性校验:按目标类型,收集全部重复
$dups = [];
if ($targetType === 'company' && $companyName !== '') {
+11
View File
@@ -12,6 +12,7 @@ require_once __DIR__ . '/../common/logger.php';
require_once __DIR__ . '/../common/helpers.php';
require_once __DIR__ . '/../common/completeness.php';
require_once __DIR__ . '/../common/duplicate_check.php';
require_once __DIR__ . '/../common/validate.php';
checkAjax();
checkPermission('preliminary');
@@ -57,6 +58,16 @@ switch ($table) {
'graduated_from' => 's', 'hometown' => 's', 'work_location' => 's',
'id_type' => 's', 'id_number' => 's', 'source_channel' => 's', 'source_detail' => 's',
]);
// 格式校验:身份证 / 手机 / 邮箱
if (!empty($fields['id_number'])) {
checkFieldFormat('id_number', $fields['id_number']);
}
if (isset($_POST['phone'])) {
checkFieldFormat('phone', $_POST['phone']);
}
if (isset($_POST['email'])) {
checkFieldFormat('email', $_POST['email']);
}
// 唯一性校验(排除自身):身份证 / 手机 / 邮箱
$dups = [];
if (!empty($fields['id_number'])) {