主要是几个功能,一是邮箱必填和网址必填,而且是完全需要填写正确的内容,否则正则判断后不正确,你还得重新填写对应内容;二是用户名必须不少于两个字符,且需要包含中文,否则正则不通过,依旧要重填。
这样一来,我如果回复了用户的评论后,就可以完美的通过邮箱或者更加高级、暴力的方式去通知评论者,长话短说,不多废话,代码如下:
/*评论名称必须包含中文,评论邮箱,网址必填*/
Add_Filter_Plugin('Filter_Plugin_PostComment_Core', 'PostComment_Core');
function PostComment_Core(&$cmt) {
global $zbp;
// 获取 POST 请求中的 email, HomePage 和 username 参数
$email = GetVars("email", "POST");
$homepage = GetVars("HomePage", "POST");
$username = GetVars("username", "POST");
// 使用系统内置的 CheckRegExp 进行初步验证
if (!CheckRegExp($email, '[email]')) {
$cmt->IsThrow = true;
$error_code_invalid_email = 16; // 自定义的错误代码
$zbp->lang['error'][$error_code_invalid_email] = '邮箱格式不正确'; // 错误提示信息
$zbp->ShowError($error_code_invalid_email, __FILE__, __LINE__); // 抛出错误
}
if (!CheckRegExp($homepage, '[homepage]')) {
$cmt->IsThrow = true;
$error_code_invalid_homepage = 17; // 自定义的错误代码
$zbp->lang['error'][$error_code_invalid_homepage] = '网址格式不正确'; // 错误提示信息
$zbp->ShowError($error_code_invalid_homepage, __FILE__, __LINE__); // 抛出错误
}
// 邮箱的正则表达式 - 更严格的正则
$email_strict_pattern = '/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/';
// 主页的正则表达式 - 更严格的正则
$homepage_strict_pattern = '/^https?:\/\/[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(\/.*)?$/';
// 更严格的邮箱格式验证
if (!preg_match($email_strict_pattern, $email)) {
$cmt->IsThrow = true;
$error_code_strict_email = 18; // 自定义的错误代码
$zbp->lang['error'][$error_code_strict_email] = '邮箱格式不符合更严格的要求,邮箱必须是能接受到频道通知的可用邮箱。'; // 错误提示信息
$zbp->ShowError($error_code_strict_email, __FILE__, __LINE__); // 抛出错误
}
// 更严格的主页格式验证
if (!preg_match($homepage_strict_pattern, $homepage)) {
$cmt->IsThrow = true;
$error_code_strict_homepage = 19; // 自定义的错误代码
$zbp->lang['error'][$error_code_strict_homepage] = '网址格式不符合更严格的要求,网址例如:https://www.dao.js.cn/'; // 错误提示信息
$zbp->ShowError($error_code_strict_homepage, __FILE__, __LINE__); // 抛出错误
}
// 用户名的正则表达式 - 至少两个字符,且必须包含中文字符
$username_pattern = '/^(?=.*[\x{4e00}-\x{9fa5}]).{2,}$/u';
// 检查用户名是否满足条件:至少包含一个中文字符,并且长度不少于两个字符
if (!preg_match($username_pattern, $username)) {
$cmt->IsThrow = true;
$error_code_invalid_username = 20; // 自定义的错误代码
$zbp->lang['error'][$error_code_invalid_username] = '用户名必须包含中文字符且不得少于两个字'; // 错误提示信息
$zbp->ShowError($error_code_invalid_username, __FILE__, __LINE__); // 抛出错误
}
// 其他逻辑处理,如成功后的进一步处理
}
将代码放到include.php的底部即可生效。