Li Yuan Bo
啥都会点……-李元波
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);
}
}
标签:emlog
发表评论: