十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
帝国CMS 6.6版新增自定义扩展变量功能,用户可以自定义公共的程序使用变量,为用户扩展系统带来便利。比如可以增加像系统$public_r[newsurl]这样的变量,还比如扩展了某个系统模型,需要增加设置项都可以用扩展变量来实现...等等。
10年积累的网站建设、成都网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先做网站设计后付款的网站建设流程,更有华容免费网站建设让你可以放心的选择与我们合作。
自定义扩展变量功能介绍:
(1)、扩展变量支持按分类归类及显示。删除相应分类会删除分类下的变量。
(2)、变量支持是否写入缓存,如果写入缓存,在任意php或模板中用$public_addr['add_变量名']可取得变量内容。
(3)、内置变量返回函数(数据库读取变量内容):ReturnPublicAddVar(变量名)。取多个变量内容可用逗号隔开,例子:
取得单变量内容:$value=ReturnPublicAddVar('myvar'); //$value就是变量内容。
取得多个变量内容:$value=ReturnPublicAddVar('myvar1,myvar2,myvar3'); //$value['myvar1']才是变量内容。
自定义扩展变量功能的强大在于为二次开发和插件开发提供了便利,再6.5及其以前想要设置类似于$public_r[newsurl](网站地址)这样的的全局变量,我们就必须要更改系统源文件和修改数据表,从而造成升级不不方便。
备注:
1.后台-系统设置-系统参数设置 所有设置记录在数据表phome_enewspublic
2.$public_r缓存数组记录的是数据表phome_enewspublic大部分设置(6.5及其以前) 6.6应该有个分表记录用户设置(猜测)
3.$public_r缓存记录在e/class/config.php中
4.e/class/connect.php包含了e/class/config.php (包含就是require() 或者 include())
5.所有的控制器均包含/引用了e/class/connect.php (控制器就像e/enews/index.php e/DoInfo/ecms.php 这样的文件,根据对应的表单使用对应的函数和引用对应的文件)
6.非控制器比如e/class/functions.php 或者是是e/data/下的木板缓存文件 默认包含他们的文件都包含了e/class/connect.php存在了,所以$public_r成了全局变量();使用如上图
7.除了$public_r还有e/class/config.php文件里你能看到的 e/class/connect.php function db_connect()上方的 比如$navinfor,是不是很熟系在内容也里$navinfor[title] $navinfor['字段']
自定义扩展变量可以不用到应用扩展上,来简单点的
1.来个SEOtitle
2.来个备案号(我朝特色,备案号命名统一的话分享模板都不用改备案号了)
3.来个统计代码(大众公共效应之后也不用该模板板了)
n.....
当然这些模板公共变量也可以做到
第二重:后台目录自定义,假如对方知道密码也找不到登录后台。第三重:假如知道密码和后台目录也无法知道认证码,认证码存放.php文件必须登录FTP才能查看文件内容。帝国COOKIE信息四重安全认证:第一重:系统验证采用随机密码认证,每次登录或退出都会产生新的随机密码,无规律可寻,并且认证采用数据库+COOKIE双重认证,安全可靠。第二重:后台登录验证COOKIE变量前缀自定义,连变量名都不知道就无法模拟COOKIE发包。第三重:COOKIE信息采用COOKIE认证码验证,信息加密采用双重md5加密,无法破解COOIE认证码,并且COOIE认证码存放.php文件必须登录FTP才能查看文件内容。第四重:COOKIE信息与登录IP绑定认证,假如COOKIE信息被完全获取并且随机密码没有改动,不知道登录者IP也无法通过认证。下面我们来介绍帝国CMS如何设置是安全最优化的:(注:以下选项都是非必须设置,只是优化建议。)php配置文件php.ini设置:1、magic_quotes_gpc 设置为 On魔术引用,此项建议开启。2、register_globals 设置为 OffPHP全局变量,此项建议关闭。3、display_errors 设置为 Off不显示PHP错误提示,此项设置对系统安全影响不大。帝国网站管理系统设置:1、安装时修改表前缀建议在全新安装帝国CMS时修改表前缀。2、安装初始化管理员帐号时,不要将常见的诸如admin等作为管理员用户名。3、管理员密码设置6位以上密码由字母、数字和下划线组成。
首先global $public_r;首先定义一个全局变量$public_r,这个变量是一个数组,里面存了一些系统设置,如网站域名等,在这里$public_r['canposturl']是系统设置里面的“前台允许提交的来源地址”,每一列是一个地址,比如
让我们一行一行分析:
if($public_r['canposturl']){ //如果设置了前台允许提交的来源地址
$r=explode("\r\n",$public_r['canposturl']); //按照换行\r\n切分为一个数组$r,结果应该是
$r = array('', '');
$count=count($r);//使用数组的count方法统计有多少条地址
$b = 0; //这个变量是当作一个标志,用来判断
for($i=0;$i$count;$i++) //
$_SERVER['HTTP_REFERER'] //这个得到的是页面的来源地址,比如我从点击一个链接到,那么使用$_SERVER['HTTP_REFERER'] 得到的就是
for($i=0;$i$count;$i++)
if(strstr($_SERVER['HTTP_REFERER'],$r[$i]))
这个将页面的来源地址循环和“前台允许提交的来源地址”数组$r里面的每一条对比,如果存在就跳出循环并设置$b=1,如果不存在就继续循环,循环结束看$b的值,只有在存在的情况下才会得到$b=1,否则$b=0,当$b=0的时候,使用错误跳转函数printerror,'NotCanPostUrl'是一个错误常量,在e\data\language\gb\pub\q_message.php中,表示'请从网站提交数据'。
这个函数就是用来判断前台提交的表单是不是从指定的网站发来的,防止有人修改表单恶意注册等等之类的。
该变量是当前栏目id,可以用
$navclassid
或
$GLOBALS[navclassid]
都可以。
$GLOBALS
是
php
中的超全局变量,你在页面中
var_dump
输出看看就知道了。
$class_r[$nid]就很明显了,$class_r存着所有栏目的数据,通过栏目id(也就是问题中的$nid)拿到当前栏目的所有的值。