会点点代码修改,会各种程序上手运营,会电商,会运营,还会吃点喝点!*_*
当前位置:首页- emlog MVC解构20 - 控制器Controller之Comment_Controller

emlog MVC解构20 - 控制器Controller之Comment_Controller

作者:李元波发布时间:2024-12-12 08:55分类: 日常 浏览:9评论:0


导读:Comment_Controller只有一个方法:发表评论 function addComment($params) { // 获取提交的评论名,删除前后的空格,特殊字符添...

Comment_Controller只有一个方法:发表评论

function addComment($params) {
    // 获取提交的评论名,删除前后的空格,特殊字符添加反斜杠
    $name = isset($_POST['comname']) ? addslashes(trim($_POST['comname'])) : '';
    // 获取提交的评论内容,删除前后的空格,特殊字符添加反斜杠
    $content = isset($_POST['comment']) ? addslashes(trim($_POST['comment'])) : '';
    // 获取提交的评论者邮箱,删除前后的空格,特殊字符添加反斜杠
    $mail = isset($_POST['commail']) ? addslashes(trim($_POST['commail'])) : '';
    // 获取提交的评论者个人网站网址,删除前后的空格,特殊字符添加反斜杠
    $url = isset($_POST['comurl']) ? addslashes(trim($_POST['comurl'])) : '';
    // 获取提交的验证码,转换为大写,删除前后的空格,特殊字符添加反斜杠
    $imgcode = isset($_POST['imgcode']) ? addslashes(trim(strtoupper($_POST['imgcode']))) : '';
    // 获取提交的评论的日志ID
    $blogId = isset($_POST['gid']) ? intval($_POST['gid']) : -1;
    // 获取提交的评论的父评论ID
    $pid = isset($_POST['pid']) ? intval($_POST['pid']) : 0;

    // 注册用户且登录
    if (ISLOGIN === true) {
        // 建立缓存对象
        $CACHE = Cache::getInstance();
        // 获取用户缓存信息数组
        $user_cache = $CACHE->readCache('user');
        // 通过缓存获取用户名,特殊字符添加反斜杠
        $name = addslashes($user_cache[UID]['name_orig']);
        // 通过缓存获取用户邮箱,特殊字符添加反斜杠
        $mail = addslashes($user_cache[UID]['mail']);
        // 将本站地址设为个人网站网站,特殊字符添加反斜杠
        $url = addslashes(BLOG_URL);
    }

    // $url变量非空,且不管大小写$url的前四个字符不是http,则在$url前面添加http://
    if ($url && strncasecmp($url,'http',4)) {
        $url = 'http://'.$url;
    }

    // 执行挂载在'comment_post'钩子上的函数
    // 'comment_post':发表评论扩展点(写入评论前),可用于垃圾评论防范
    doAction('comment_post');

    // 建立评论模型
    $Comment_Model = new Comment_Model();
    // 把获取的评论者信息写入cookie
    $Comment_Model->setCommentCookie($name,$mail,$url);
    // 判断评论,输出错误信息
    if($Comment_Model->isLogCanComment($blogId) === false) {
        emMsg('评论失败:该文章已关闭评论');
    } elseif ($Comment_Model->isCommentExist($blogId, $name, $content) === true) {
        emMsg('评论失败:已存在相同内容评论');
    } elseif (ROLE == ROLE_VISITOR && $Comment_Model->isCommentTooFast() === true) {
        emMsg('评论失败:您提交评论的速度太快了,请稍后再发表评论');
    } elseif (empty($name)) {
        emMsg('评论失败:请填写姓名');
    } elseif (strlen($name) > 20) {
        emMsg('评论失败:姓名不符合规范');
    } elseif ($mail != '' && !checkMail($mail)) {
        emMsg('评论失败:邮件地址不符合规范');
    } elseif (ISLOGIN == false && $Comment_Model->isNameAndMailValid($name, $mail) === false) {
        emMsg('评论失败:禁止使用管理员昵称或邮箱评论');
    } elseif (!empty($url) && preg_match("/^(http|https)\:\/\/[^<>'"]*$/", $url) == false) {
        emMsg('评论失败:主页地址不符合规范','javascript:history.back(-1);');
    } elseif (empty($content)) {
        emMsg('评论失败:请填写评论内容');
    } elseif (strlen($content) > 8000) {
        emMsg('评论失败:内容不符合规范');
    } elseif (ROLE == ROLE_VISITOR && Option::get('comment_needchinese') == 'y' && !preg_match('/[\x{4e00}-\x{9fa5}]/iu', $content)) {
        emMsg('评论失败:评论内容需包含中文');
    } elseif (ISLOGIN == false && Option::get('comment_code') == 'y' && session_start() && $imgcode != $_SESSION['code']) {
        emMsg('评论失败:验证码错误');
    } else { // 评论信息输入正确
        // 清空验证码信息
        $_SESSION['code'] = null;
        // 添加评论
        $Comment_Model->addComment($name, $content, $mail, $url, $imgcode, $blogId, $pid);
    }
}

标签:


发表评论: