ChatGPT批量写原创文章软件

discuz重复帖子(discuz导入帖子)

求解决一个Discuz使用问题,查看源文件,网站标题,关键词,说明都重复了,看图模板文件调用冲突, 首页已经有了顶部信息,又调用了一次head文件discuz7.1 如何让帖子一个ip只能访问一次方法一: 把每个

本文目录一览:

  • 1、求解决一个Discuz使用问题,查看源文件,网站标题,关键词,说明都重复了,看图
  • 2、discuz7.1 如何让帖子一个ip只能访问一次
  • 3、discuz 怎么样设置限制发重复帖
  • 4、discuz 3.2板块标题重复,有些好着,有些重复

求解决一个Discuz使用问题,查看源文件,网站标题,关键词,说明都重复了,看图

模板文件调用冲突, 首页已经有了顶部信息,又调用了一次head文件

discuz7.1 如何让帖子一个ip只能访问一次

方法一: 把每个访问过那篇帖子的IP记录下, 存到Database, 当任何电脑访问那篇帖子时, 比较一下它的IP和在Database里面的IP, 看看他之前有没有访问过决定让不让他看那篇帖子!

方法二: 为每个那篇帖子的访问者设定的cookies, 每当任何访问者看那篇帖子时, 先检查它的cookies, 看看有没有被设定过, 有就不再让它访问帖子, 没有就让它访问, 同时设定访问者的cookies!

discuz 怎么样设置限制发重复帖

一、比如限制重复主题、重复回复的代码修改:打开 include/newreply.inc.php, 查找:$attachment = empty($attachments) ? 0 : 1;(discuz6.1的代码)$attachment = empty($attachments) ? 0 : ($imageexists ? 2 : 1);(discuz7的代码)在下面增加// ********************* 重复回帖检测 *****************************$repeatlevel = 2; // 重复回帖的验证级别,后面有详细说明。$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('请不要重复回帖,这很浪费资源的。请返回。');

}

}

// ********************* 重复回帖检测 ***************************** 关于回帖的重复检测级别,直接修改 $repeatlevel 参数就行了。下面是当这个变量的值为1~4的时候所代表的级别:1 - 标题与数据库里的记录一致即算重复

2 - 内容与数据库里的记录一致即算重复

3 - 内容、标题与数据库里的记录都一致算重复

4 - 内容、标题、用户名与数据库里的记录都一致算重复备注:上述代码据Linker测试验证,有着很大的弊端,在回复时会有大量的等待现象,可以得知是在遍历数据库查询,因此对于发贴和回复量比较大的论坛,Linker不建议采用这些办法来限制主题与回复的重复。二、限制回复中文:修改include/newreply.inc.php找到 $author = empty($isanonymous) ? $discuz_user : '';在其下一行加入:if(preg_match_all("/[\xB0-\xF7][\xA1-\xFE]/",$message,$regs)=3) showmessage("请输入4个中文以上!");这个方法,Linker在采用,速度显示很快,并且限制了诸如连续字母、连续数字、连续符号等输入,从而促进会员的主动回复。三、还有一个限制主题与回复重复的方法,Linker没有具体测试,看代码,似乎也是遍历数据库查询的办法,也有可能造成回复的迟钝延时,但据discuz论坛网友说明,是付费获得的方法,有需要的朋友可以具体测试一下:1,修改include/newreply.inc.php找到$author = empty($isanonymous) ? $discuz_user : '';在其下一行加入 if($subject$db-result_first("SELECT * FROM `{$tablepre}posts` WHERE `subject` LIKE '$subject' limit 0,1")) showmessage("scriptalert('标题与已有标题重复!');history.go(-1)/script");

if($db-result_first("SELECT * FROM `{$tablepre}posts` WHERE `message` LIKE '$message' limit 0,1")) showmessage("scriptalert('内容与已有内容重复!');history.go(-1)/script");

2,修改include/newthread.inc.php找到$db-query("INSERT INTO {$tablepre}threads (fid, readperm, price, iconid, typeid, author, authorid, subject, dateline, lastpost, lastposter, displayorder, digest, special, attachment, subscribed, moderated)

VALUES ('$fid', '$readperm', '$price', '$iconid', '$typeid', '$author', '$discuz_uid', '$subject', '$timestamp', '$timestamp', '$author', '$displayorder', '$digest', '$special', '$attachment', '$subscribed', '$moderated')");在其上一行加入if($db-result_first("SELECT * FROM `{$tablepre}threads` WHERE `subject` LIKE '$subject' limit 0,1")) showmessage("scriptalert('标题与已有标题重复!');history.go(-1)/script");四、连续回帖自动改为在上面一楼追加【实用·长帖自动不追加·版块黑白名单】,测试discuz7有效。//连续回复自动合并$_insertword = "\n\n$discuz_userss 于 ".date("$dateformat $timeformat",

$timestamp)." 补充以下内容\n\n";//追加内容前缀$_maxlength = 80;//字符数大于此值则一律不合并,注意1中文=2字符(GBK)或3字符(UTF)$_reducesmile = 1;//设为1=去除表情之后计算字数,0=否$_reducequote = 1;//设为1=去除引用之后计算字数,0=否$_reducespace = 1;//设为1=去除空白换行之后计算字数,0=否$_blackfids = array(18);//版块FID黑名单,此名单内不进行合并$_whitefids = array();//版块FID白名单,此名单内进行合并,黑白名单同时存在时白名单

无效//设置部分结束if($_blackfids $_whitefids) unset($_whitefids);$temp = $message;if(is_array($smilies))if($_reducesmile) foreach($smilies as $sm) {$temp = str_replace($sm['code'], '', $temp);}if($_reducequote) $temp = preg_replace("/\s*\[quote\][\n\r]*(.+?)[\n\r]

*\[\/quote\]\s*/is", '', $temp);if($_reducespace) $temp = preg_replace("/\s/is", '', $temp);$temp = trim($temp);$length = strlen($temp);unset($temp);if($length = $_maxlength (!$_blackfids || !in_array($fid, $_blackfids))

(!$_whitefids || in_array($fid, $_whitefids))) {$q = $db-query("SELECT authorid, pid FROM {$tablepre}posts WHERE

tid='$tid' ORDER BY pid DESC LIMIT 1");$q = $db-fetch_array($q);if($q['authorid'] == $discuz_uid !$attachment !$isanonymous) {$message = $_insertword . $message;$db-query("UPDATE {$tablepre}posts SET smileyoff = 0,

bbcodeoff = 0, message = CONCAT(message, '$message') WHERE pid='{$q['pid']}'");showmessage('post_reply_succeed', "viewthread.php?

tid=$tidpid={$q[pid]}page=".(@ceil(($thread['special'] ? $thread['replies'] :

$thread['replies'] + 1) / $ppp))."extra=$extra#pid{$q[pid]}");

}

}//连续回复自动合并上述代码本来还有管理组不受限的功能,Linker觉得无此必要,管理组也不能特殊嘛,有需要的朋友,去discuz论坛搜索。OK,有了这些,Linker觉得,已经方便很多了,但另一方面,Linker同时也告诫大家,论坛是要发挥会员的主动热情的,限制过多,不便过甚,反而会使人气大降,这样就得不偿失了,有一位朋友说得好,这些问题,其实可以由加大版主管理力量来解决的。

discuz重复帖子(discuz导入帖子)

discuz 3.2板块标题重复,有些好着,有些重复

为了避免发布重复的帖子,我们可以手动修改一下Discuz!的源代码来实现:

1、打开 include\newthread.inc.php

2、查找:

复制代码

3、在后面一行添加:

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

showmessage('post_sm_isnull');}

复制代码

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

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

2、查找:

//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$start+$len $i$strlen; $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$start+$len $i$strlen; $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

复制代码

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

复制代码

3、在后面一行添加

复制代码

'post_repeated' = '您所发布的主题或内容已存在:《a href=\"viewthread.php?tid=$repeat[tid]\" target=\"_blank\"$repeat[subject]/a》请勿重复发布。',

相关文章