php防止重复标题,Discuz!防止发布重复标题或重复内容的方法

在采集大量的内容之后,往往有采到很多和以前很多相同标题或相同内容的帖子,为了避免发布重复的帖子,我们可以手动修改一下Discuz!的源代码来实现:

1、打开 include\newthread.inc.php

2、查找:

if($subject == '' || $message == '') {

showmessage('post_sm_isnull');}

复制代码

3、在后面一行添加:

//Refuse repeated post. Code by KaijuanStudio , Optimization by phytist

$repeated = 4; //设置防范重复发贴的级别,0=关闭,1=防范相同ID发布相同标题的新主题,2=防范发布相同标题的新主题,3=防范发布相同标题且内容部分相同的新主题,4=防止内容一致或标题和部分内容相同的主题。

if($repeated == 1) {

$query = $db->query("SELECT tid, subject FROM {$tablepre}threads WHERE authorid='$discuz_uid' AND subject='$subject'");

if($db->num_rows($query)) {

$repeat = $db->fetch_array($query);

showmessage('post_repeated', 'index.php');

}

} elseif ($repeated == 2) {

$query = $db->query("SELECT tid, subject FROM {$tablepre}threads WHERE subject='$subject'");

if($db->num_rows($query)) {

$repeat = $db->fetch_array($query);

showmessage('post_repeated', 'index.php');

}

} elseif ($repeated == 3) {

$query = $db->query("SELECT tid, authorid, subject, message FROM {$tablepre}posts WHERE first='1' AND subject='$subject'");

if($db->num_rows($query)) {

$repeat = $db->fetch_array($query);

if($repeat['authorid'] == $discuz_uid) {

showmessage('post_repeated', 'index.php');

}

function SubString($str, $start, $len = 0xFFFFFFFF) {

if($start < 0) {

$start = strlen($str) + $start;

}

if($len < 0) {

$len = strlen($str) - $start + $len;

}

$tmp = '';

$result = '';

$strlen = strlen($str);

$begin = 0;

$subLen = 0;

for($i = 0; $i < $start + $len && $i < $strlen; $i++) {

if($i < $start) {

if(ord($str[$i]) >= 161 && ord($str[$i]) <= 247 && ord($str[$i+1]) >= 161 && ord($str[$i+1]) <= 254) $i++;

} else {

$begin=$i;

for(; $i

if(ord($str[$i]) >= 161 && ord($str[$i]) <= 247 && ord($str[$i+1])>=161 && ord($str[$i+1])<=254) $i++;

}

return substr($str,$begin,$i-$begin);

}

}

}

if(strlen($message) > 60) {

if(SubString($message, -100) == SubString($repeat['message'], -100) || SubString($message, 50, 100) == SubString($repeat['message'], 50, 100)) {

showmessage('post_repeated', 'index.php');

}

} else {

if($message == SubString($repeat['message'], 0, 60)) {

showmessage('post_repeated', 'index.php');

}

}

}

}elseif ($repeated == 4) {

$query = $db->query("SELECT tid, authorid, subject, message FROM {$tablepre}posts WHERE first='1' AND (subject='$subject' OR message='$message')");

if($db->num_rows($query)) {

$repeat = $db->fetch_array($query);

if($repeat['authorid'] == $discuz_uid) {

showmessage('post_repeated', 'index.php');

}

function SubString($str, $start, $len = 0xFFFFFFFF) {

if($start < 0) {

$start = strlen($str) + $start;

}

if($len < 0) {

$len = strlen($str) - $start + $len;

}

$tmp = '';

$result = '';

$strlen = strlen($str);

$begin = 0;

$subLen = 0;

for($i = 0; $i < $start + $len && $i < $strlen; $i++) {

if($i < $start) {

if(ord($str[$i]) >= 161 && ord($str[$i]) <= 247 && ord($str[$i+1]) >= 161 && ord($str[$i+1]) <= 254) $i++;

} else {

$begin=$i;

for(; $i

if(ord($str[$i]) >= 161 && ord($str[$i]) <= 247 && ord($str[$i+1])>=161 && ord($str[$i+1])<=254) $i++;

}

return substr($str,$begin,$i-$begin);

}

}

}

if(strlen($message) > 60) {

if(SubString($message, -100) == SubString($repeat['message'], -100) || SubString($message, 50, 100) == SubString($repeat['message'], 50, 100)) {

showmessage('post_repeated', 'index.php');

}

} else {

if($message == SubString($repeat['message'], 0, 60)) {

showmessage('post_repeated', 'index.php');

}

}

}

}

//Refuse repeated post. Code End

复制代码

* 添加提示信息(可选择加与不加,加了后当发重复的帖子的时候会有温馨提示增加用户体验)

1、打开:templates\default\messages.lang.php

2、查找:

'post_net_price_iszero' => '您的主题售价扣除积分交易税后为 0,请返回修改。',

复制代码

复制代码

3、在后面一行添加

'post_repeated' => '您所发布的主题或内容已存在:《$repeat[subject]》请勿重复发布。',

复制代码

不好意思!用中文测试后不行得,只有数字和英文可以!  郁闷

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值