恋雾迷尘论坛's Archiver

爱雨冷雪 发表于 2006-3-26 11:53

限制用戶重複發帖

打開 include/newthread.inc.php 查找:

[code]$attachment = ($allowpostattach && $attachments = attach_upload()) ? 1 : 0;[/code]

在下面添加:

[code]// ********************* 重複發帖檢測 *****************************

$repeatlevel = 4;                        // 重複發帖的驗證級別

$chk_sql = "SELECT COUNT(*) FROM {$tablepre}posts WHERE ";
$chk_term = "";
switch($repeatlevel) {
        case 1:
                $chk_term = "subject='{$subject}'";
                break;
        case 2:
                $chk_term = "message='{$message}'";
                break;
        case 3:
                $chk_term = "subject='{$subject}' AND message='{$message}'";
                break;
        case 4:
                $chk_term = "subject='{$subject}' AND message='{$message}' AND authorid='{$discuz_uid}'";
                break;
}
if($chk_term) {
        $chk_num = $db->result($db->query($chk_sql . $chk_term), 0);
        if($chk_num > 0) {
                showmessage('請不要重複發帖,這很浪費資源的。請返回。');
        }
}
// ********************* 重複發帖檢測 *****************************
[/code]

這樣就行了。

關於發帖的重複檢測級別,直接修改 [color=red]$repeatlevel[/color] 參數就行了。
下面是當這個變量的值為1~4的時候所代表的級別:

[quote]1 - 標題與數據庫裡的記錄一致即算重複
2 - 內容與數據庫裡的記錄一致即算重複
3 - 內容、標題與數據庫裡的記錄都一致算重複
4 - 內容、標題、用戶名與數據庫裡的記錄都一致算重複[/quote]

xuhu 发表于 2006-5-27 13:29

稍微补充一下
引用 mfboy:
如果要改到回复和编辑帖子也要检测,自己参考着修改 newreply.inc.php 和 editpost.inc.php 文件。把上面的代码放到更新数据库的语句上面就行了。

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.