Z-Blog评论必须填写邮箱、网址等信息的教程

主要是几个功能,一是邮箱必填和网址必填,而且是完全需要填写正确的内容,否则正则判断后不正确,你还得重新填写对应内容;二是用户名必须不少于两个字符,且需要包含中文,否则正则不通过,依旧要重填。
这样一来,我如果回复了用户的评论后,就可以完美的通过邮箱或者更加高级、暴力的方式去通知评论者,长话短说,不多废话,代码如下:

/*评论名称必须包含中文,评论邮箱,网址必填*/
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的底部即可生效。

3 个赞

马克,谢谢分享

1 个赞