discuz遍历(discuz遍历用户名)

纸扎戏偶

今天给各位分享discuz遍历的知识,其中也会对discuz遍历用户名进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

  • 1、discuz 怎么样设置限制发重复帖
  • 2、discuz论坛快照劫持,怎么办
  • 3、Discuz X3.2搬家后Invalid argument supplied for foreach() in\class_template.php on line 141

1、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同时也告诫大家,论坛是要发挥会员的主动热情的,限制过多,不便过甚,反而会使人气大降,这样就得不偿失了,有一位朋友说得好,这些问题,其实可以由加大版主管理力量来解决的。

2、discuz论坛快照劫持,怎么办

去百度站长平台提交删除快照申请

头部添加代码禁止百度收录快照

重新安装discuz,以后不要再中木马了

3、Discuz X3.2搬家后Invalid argument supplied for foreach() in\class_template.php on line 141

在 php 中,如问题所描述的 foreach 遍历源数组出现的错误,通常是由于所遍历的不是一个有效数组。

通常的代码中,会在 foreach 之前添加一个 is_array() 进行判断:

if(is_array($aaaa))

{                           

    foreach(....) 

    {

        .....

     }

}

从问题描述来看,原因可能在于在进行数据库中数据转移过程中,某些数据并没有正确导入。

建议:

1、修改源代码,添加容错性。

2、将缺失的数据补充完整。

关于discuz遍历和discuz遍历用户名的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

文章版权声明:除非注明,否则均为我爱教程术原创文章,转载或复制请以超链接形式并注明出处。