ChatGPT批量写原创文章软件

包含dedecms多函数判断的词条

如何实现织梦DedeCMS的tag标签静态化方法用dedecms系统做网站的朋友特别多,dedecms功能强大,除了安全是一个问题外,tags标签静态化问题困扰很多朋友,湖哥为了解决一个网站的tags标签静态化问题找

本文目录一览:

  • 1、如何实现织梦DedeCMS的tag标签静态化方法
  • 2、求大湿指导:织梦(dedecms) 调用文章数量 循环判断
  • 3、检验用户是否有权使用某功能的织梦函数TestPurview
  • 4、dedecms 如何进行判断调用相关文章
  • 5、织梦(DEDEcms)代码调用(分类列表和判断取值)

如何实现织梦DedeCMS的tag标签静态化方法

用dedecms系统做网站的朋友特别多,dedecms功能强大,除了安全是一个问题外,tags标签静态化问题困扰很多朋友,湖哥为了解决一个网站的tags标签静态化问题找了很多文章,也试了很多次,终于在今天解决了这个问题:1.dedecms版本5.7sp1GBK2.服务器:windows2008iis7话不多说,开始!目标:我们要使原来tags.php?/3qshop/变动为/tags/3qshop.html并且为伪静态,为什么要为伪静态?因为我们的关键词(tags)太多,比真正静态节省空间。那么我们要做如下工作,记得一步一步来哦!第1步:首先找到/include/taglib/tag.lib.php中,在87行找到$row['link']=$cfg_cmsurl."/tags?".urlencode($row['keyword']);将其修改为:$row['link']=$cfg_cmsurl."/tags/".urlencode($row['keyword']).".html";第2步:修改分页代码部分修改include/arc.taglist.class.php,找到分页函数,将其更换为:注意:从429行----541行用以下内容替换!(提示:网上有文章中讲的以下代码中的"pageinfo"是错误的,应该为\"pageinfo\",不然会有错误提示哦!已经代码测试OK!)/***获取动态的分页列表**@accesspublic*@paramint$list_len列表宽度*@paramstring$listitem列表样式*@returnstring*/functionGetPageListDM($list_len,$listitem="info,index,end,pre,next,pageno"){$prepage="";$nextpage="";$prepagenum=$this-PageNo-1;$nextpagenum=$this-PageNo+1;if($list_len==""||preg_match("/[^0-9]/",$list_len)){$list_len=3;}$totalpage=$this-TotalPage;if($totalpageTotalResult0){return"共1页/".$this-TotalResult."条";}if($this-TotalResult==0){return"共0页/".$this-TotalResult."条";}$maininfo="共{$totalpage}页/".$this-TotalResult."条rn";$purl=$this-GetCurUrl();$basename=basename($purl);$tmpname=explode('.',$basename);$purl=str_replace($basename,'',$purl).urlencode($this-Tag);//var_dump($purl);exit;//$purl.="?/".urlencode($this-Tag);//获得上一页和下一页的链接if($this-PageNo!=1){$prepage.="上一页rn";$indexpage="首页rn";}else{$indexpage="首页rn";}if($this-PageNo!=$totalpage$totalpage1){$nextpage.="下一页rn";$endpage="末页rn";}else{$endpage="末页rn";}//获得数字链接$listdd="";$total_list=$list_len*2+1;if($this-PageNo=$total_list){$j=$this-PageNo-$list_len;$total_list=$this-PageNo+$list_len;if($total_list$totalpage){$total_list=$totalpage;}}else{$j=1;if($total_list$totalpage){$total_list=$totalpage;}}for($j;$jPageNo){$listdd.="$jrn";}else{$listdd.="".$j."rn";}}$plist='';if(preg_match('/info/i',$listitem)){$plist.=$maininfo.'';}if(preg_match('/index/i',$listitem)){$plist.=$indexpage.'';}if(preg_match('/pre/i',$listitem)){$plist.=$prepage.'';}if(preg_match('/pageno/i',$listitem)){$plist.=$listdd.'';}if(preg_match('/next/i',$listitem)){$plist.=$nextpage.'';}if(preg_match('/end/i',$listitem)){$plist.=$endpage.'';}return$plist;}第3步:设置伪静态规则:把以上内容保存为:web.config放到网站根目录!第4步:生成文章,浏览!大功告成?错,有可能你会出现以下错误!系统无此标签,可能已经移除!你还可以尝试通过搜索程序去搜索这个关键字:前往搜索如果你的浏览器没反应,请点击这里解决法如下:在网站根目录下找到tags.php此文件,将以下代码替换掉:$tag=trim($_SERVER['QUERY_STRING']);换成$tag=strtolower(trim($_SERVER['QUERY_STRING']));出现这个问题的原因是IIS伪静态中文转码为UTF8,解决方法就是在tags.php中加入判断UTF8编码的语句,如果是则转换为GBK,这样就可以解决了方法:1.把以下代码加入到根目录下tags.php中的18行下面,也就是if(isset($tags[2]))$PageNo=intval($tags[2]);下面哦:functionis_utf8($tag){if(preg_match("/^([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}/",$tag)==true||preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}$/",$tag)==true||preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){2,}/",$tag)==true){returntrue;}else{returnfalse;}}2.在第25行上面加入以下语句,也就是在$tag=FilterSearch(urldecode($tag));上面加入,记得这里是上面哦!if(is_utf8($tag)==1){$tag=iconv("utf-8","gbk",$tag);}这个作用就是调用上面的函数判断编码如果是utf8则转为gbk;到此,tags伪静态问题全面完美解决!

包含dedecms多函数判断的词条 第1张

求大湿指导:织梦(dedecms) 调用文章数量 循环判断

两种思路:

如果只有10篇的需求,就abc各调用10篇,然后父级容器固定高度,overflow:hidden;隐藏掉超出的部分。

写一个php文件将数据库的里的文章内容转成json数据,用js处理json数据append到页面中。

检验用户是否有权使用某功能的织梦函数TestPurview

函数TestPurview($n)虽然,看上去只是一个相对比较简单的函数,但是这个函数是非常非常重要的,试想一下如果一个系统中没有检验某个用

户是否有权限操作某些功能的话,那么,这个系统一定非常危险,因为,随便一个人都可以操作某个功能,例如,进入后台,删除栏目,删除数据库等,就如同一个

家四周都没有墙一样,随便什么人都可以进入,这样的家完全就是公共场合,完全没有什么安全可言,一个系统也是如此。

所以,检测系统函数就比较重要了,当然,光这个一个函数还不够,不光要检验用户的使用权限,还要检验用户密码,是不是管理员,甚至是用户登录ip等,都要检验一下,这样才可以称得上安全的系统。

本函数在“管理员登陆类”userlogin.class.php里面的第一个函数就是它,返回的值是true或false,若有权限则返回trure否则返回false。

通过教程“织梦中cookie和session的应用”我们知道了,当我们登录后台后,织梦系统会把登录的用户信息写入session里面,并把session存放在/data/session文件夹里面。

因为不同的用户登录后台,产生的session是不一样的,我就在后台注册一个发布员,用户名为fby。并且,在后台定义“信息发布员”的权限如下图所示。

登录/注册后可看大图

我整理了一下“信息发布员”的权限如下:

列出授权栏目(t_AccList)

发布授权文档(a_AccNew)

列出授权文档(a_AccList)

列出我发布的文档(a_MyList)

修改我发布的文档(a_MyEdit)

删除我发布的文档(a_MyDel)

更改个人密码(sys_MdPwd)

评论管理(sys_Feedback)

管理我的上传(sys_MyUpload)

当我用fby用户名登录后,在data/session/文件夹里面,生成一个名为sess_3vtlqpg0pnlmc63pd5ai86gl16 的 session 。这个session里面的内容如下所示。

securimage_code_value|s:4:"npll";

dede_admin_id|s:1:"8";

dede_admin_type|s:1:"1";

dede_admin_channel|s:0:"";

dede_admin_name|s:3:"fby";

font color="Blue"dede_admin_purview|s:107:"t_AccList

a_AccNew a_AccList a_MyList a_MyEdit a_MyDel sys_MdPwd sys_Feedback

sys_MyUpload plus_留言簿模块 ";/font

dede_admin_style|s:10:"newdedecms";

复制代码

如果我们以超级管理员,也就是最高级别的身份登录后台后,我们同样得到类似的如下内容。

securimage_code_value|s:4:"2gsf";

dede_admin_id|s:1:"1";

dede_admin_type|s:2:"10";

dede_admin_channel|s:1:"0";

dede_admin_name|s:5:"admin";

font color="Blue"dede_admin_purview|s:15:"admin_AllowAll ";/font

dede_admin_style|s:10:"newdedecms";

复制代码

当登录后,这些是如何生成的?这个我们在上面提到了,以前的教程已经详细讲解了,其实,就是通过“管理员登陆类”userlogin.class.php里面的函数来实现的,当然,不只是这个文件。

我们分析上面这些,完全就是为了函数TestPurview($n)作准备的,好了,现在我们来分析一下这个用户权限检验函数。

函数:

function TestPurview($n)

{

$rs = FALSE;

$purview = $GLOBALS['cuserLogin']-getPurview();

if(preg_match('/admin_AllowAll/i',$purview))

{

return TRUE;

}

if($n=='')

{

return TRUE;

}

if(!isset($GLOBALS['groupRanks']))

{

$GLOBALS['groupRanks'] = explode(' ',$purview);

}

$ns = explode(',',$n);

foreach($ns as $n)

{

//只要找到一个匹配的权限,即可认为用户有权访问此页面

if($n=='')

{

continue;

}

if(in_array($n,$GLOBALS['groupRanks']))

{

$rs = TRUE; break;

}

}

return $rs;

}

复制代码

通过getPurview()方法,我们从session得到了dede_admin_purview里面的值,因

为,$GLOBALS['cuserLogin']是实例化“登录类”的对像,而这个登录类的构造函数,在我们实例化时,已经把session里面的值赋

给了$this-userPurview,代码如下所示。

$this-userID = $_SESSION[$this-keepUserIDTag];

$this-userType = $_SESSION[$this-keepUserTypeTag];

$this-userChannel = $_SESSION[$this-keepUserChannelTag];

$this-userName = $_SESSION[$this-keepUserNameTag];

$this-userPurview = $_SESSION[$this-keepUserPurviewTag];

$this-adminStyle = $_SESSION[$this-keepAdminStyleTag];

复制代码

从上面代码我们就不难发现$this-userPurview=$_SESSION['dede_admin_purview'],即

t_AccList a_AccNew a_AccList a_MyList a_MyEdit a_MyDel sys_MdPwd

sys_Feedback sys_MyUpload plus_留言簿模块这些值,明白了这一点,这个TestPurview($n)就简单多了。

1、条件判断:

if(preg_match('/admin_AllowAll/i',$purview))

{

return TRUE;

}

复制代码

如果我们用的是管理员登录,那么,$_SESSION['dede_admin_purview']的值等于admin_AllowAll,返回true,所以,这句代码就是判断是不是管理登录。

2、条件判断

if($n=='')

{

return TRUE;

}

复制代码

若参数为空,直接返回true,也就是说,只要不提供功能参数,就认为是可以操作的,所以,这一点要注意了,如果你不小心,忘记写参数,那么,很可能本想过虑掉的用户结果没有过虑掉,这是非常危险的,所以,这个最好有个提示,有个对话框,这样可以提醒管理员。

3、把登录的后台的用户的权限,例如,本例子中的“信息发布员”权限$_SESSION['dede_admin_purview'],转换成数组存放到全局变量$GLOBALS['groupRanks']里面,以备下面之用。

if(!isset($GLOBALS['groupRanks']))

{

$GLOBALS['groupRanks'] = explode(' ',$purview);

}

复制代码

4、把功能参数转换成数组:$ns = explode(',',$n);

5、遍历:foreach($ns as

$n),就是把传递过来的功能参数,通过in_array($n,$GLOBALS['groupRanks'])这个函数进行对比,看一下$n里面的有

没有存功能在数组$_SESSION['dede_admin_purview']里面。例如:本例子信息发布员的权限在上我们已经知道了

有:t_AccList a_AccNew a_AccList a_MyList a_MyEdit a_MyDel sys_MdPwd

sys_Feedback sys_MyUpload plus_留言簿模块这些值。

如果$n是:a_AccNew,t_New,经过上面一个遍历,我们发现,其中a_AccNew在数

组$GLOBALS['groupRanks'],函数立马跳出来,返回一个true,也就是说织梦的这个函数,只要$n里面有一个是

与$GLOBALS['groupRanks']里面的值一样,

就可以操作这个页面。而不需要全部都在$GLOBALS['groupRanks']里面才可以操作这个页面。

当然,你可以根据自己需要,直接严格匹配,只有全部都在登录用户的权限里面才可以操作页面。这个功能也简单,只要作如下更改:

if(!in_array($n,$GLOBALS['groupRanks']))

{

$rs = FALSE; break;

}

复制代码

也就是把$n参数里面的值判断一下,只要有一个不在登录用户的权限里面,就返回false,退出操作。

dedecms 如何进行判断调用相关文章

相关文档调用标签:

 {dede:likeart titlelen='24' row='10'}

 lia 

title="[field:title function="htmlspecialchars(@me)'/] " 

href="[field:arcurl /]"[field:title /]/a/li 

{/dede:likeart}

likeart

这个标签就是调用相关的文档的。《学技巧网站制作》为您解答,希望有所帮助!

织梦(DEDEcms)代码调用(分类列表和判断取值)

{dede:channelartlist row='2' typeid='4,3' }

h3a href='{dede:field name='typeurl'/}'{dede:field name='typename'/}/a/h3

ul

{dede:channel type='son' noself='yes' }

lia href='[field:typelink/]'[field:typename/]/a/li

{/dede:channel}

/ul

{/dede:channelartlist}

相关文章