今天给各位分享phpcms阅读权限的知识,其中也会对discuz阅读权限进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、网站开发中,后台程序是如何配合前台的?
- 2、phpcms v9 后台登录验证码不显示
- 3、大家好,我用的是Phpcms 2008 sp4的版本,但是现在发布新的文章并保存以后,文章不能正常阅读
- 4、如何配置php服务器
- 5、php人教版小学语文晦
1、网站开发中,后台程序是如何配合前台的?
最简单的用类似于phpcms的东西做,花一点点时间把里面的标签用法学会就可以了,
大致过程:
1.在C:\wamp\www\phpcms\templates,复制default文件夹,并重新命名为campus.
2.进入后台,模板风格-模板方案,将campus设为默认。
3.将静态页面需要的图片、FLASH以及样式表文件拷贝到
C:\wamp\www\phpcms\templates\campus\skins\default
4.在后台,找到管理模板,将index.html,header.html,footer.html文件备份出来。
5.在DW中打开静态首页index.html,将该页面分成三部分,将页头部分拷贝到header.html中,将页脚部分拷贝到footer.html中,将中间部分拷贝到index.html中。注意:
在将代码拷贝到index.html中时,保留原来代码的第一行和最后一行。
6.找到header文件中,链接css样式的位置,在链接的路径前加上{SKIN_PATH}.
link href="{SKIN_PATH}images/index2.css" rel="stylesheet" type="text/css"
在备份的header文件中找到base href="{SITE_URL}" /,将这句话加到header文件中的head标签的/titile下面。此处设置可以保证样式显示正确。
7.对照静态页面在后台添加栏目和子栏目,在每一个子栏目里面添加文章。
8.
1)找到导航所在的块,将ul里面的li都删除,用下面两行代码替换。
lia href="" id="menu_phpcms"span首页/span/a/li
{tag_一级栏目}
2)如果在li里面加了样式,可以再每一项前面加上{SITE_URL}.
lia title=回到42首页 href="{SITE_URL}”SPAN首页/SPAN/a/li
lia title=新闻社区 href="{SITE_URL}news"
target=_blankSPAN新闻/SPAN/a/li
lia title=校园动态 href="{SITE_URL}campus"
target=_blankSPAN校园/SPAN/a/li
其中news和campus为所在栏目的英文目录名称。
9.将页面中的内容删除,用标签替换。标签的作用:从数据库里调用数据并把数据显示到标签所在的位置。
分为4种:
1).栏目位置为空,是全局的标签,表示从整个数据库调用数据。比如{tag_首页幻灯片}
2).栏目位置为具体的值,表示从ID号为那个值的栏目里调用数据。比如:{tag_新闻10则}
3).栏目位置为变量$catid,表示随着栏目的不同,标签根据不同的栏目ID号调用内容。
比如{tag_栏目首页幻灯片}
4).栏目位置为变量$cid,表示随着子栏目的不同,标签根据不同的子栏目ID号调用内容。
比如:{tag_栏目页信息列表}
ps:以上操作可以让首页显示正常,数据都是动态的,导航好用。
10.修改文章栏目页catagory.html.
{template 'phpcms','header'}
div
!--{loop $arrchildid $cid $c}--
div class="cat"
div class="cat_title_1"a href="{$c[url]}"img src="images/more.gif" alt="更多" //a//在图片more.gif上加链接
h3{$c[catname]}/h3//子栏目名称
/div
div class="cat_left" {tag_栏目页图片标题} /div
div class="cat_right"
ul class="text_list"
{tag_栏目页信息列表}
/ul
/div
/div
!--{/loop}--
/div
{template 'phpcms','footer'}
将里面的样式换成自己设计的样式。
11.修改文章列表页list.html
{template 'phpcms','header'}
div id="main_l" class="bdr_1"
!--位置导航--
div id="position"a href=""首页/a{catpos($catid)}/div
div class="bdr_2"
ul class="pic_list"
{tag_二级栏目图片}
/ul
/div
{tag_二级栏目标题列表}
/div
{template 'phpcms','footer'}
12.修改文章内容页show.html
{template 'phpcms','header'}
!--begin main--
div id="main"
div id="main_l" class="bdr_1"
!--位置导航--
div id="position"a href=""首页/a{catpos($r['catid'])}/div
div id="content"
div id="content_head"
!--文章标题--
h1{if $titleintact}{$titleintact}{else}{$title}{/if}/h1
!--基本属性--
h2span{$updatetime}/span 作者:{if $author}{$author}{else}{$userid}{/if} 来源:{$copyfrom} {if $PHPCMS[show_hits]}浏览次数:span id="hits"0/span{/if}
{if isset($MODULE[comment])}{php list($keyid, $verify) = keyid_make('phpcms', 'content', 'title', $contentid);}
a href="{$MODULE[comment][url]}?keyid={$keyid}verify={$verify}" style="color:red;"网友评论 span id="comments_top"0/span 条/a
{/if}/h2
/div
!--简单描述--
{if $description}
div id="digest"{$description}/div
{/if}
!--正文--
div id="endtext"
{if $allow_priv}!--判断阅读权限--
{if $allow_readpoint}!--判断是否已经扣点--
{$content}
{else}
span style='background:#E4F5FA'a href='readpoint.php?contentid={$contentid}'阅读本文需要消耗font color='red'{$readpoint}/font点,您确认查看吗?/a/span
{/if}
{else}
font color="#FF0000"您没有权限阅读/font
{/if}
/div
{if $keywords}
div id="keyword"strong关键词:/strong{$keywords}/div
{/if}
{if $titles}
div id="titles"
h3本文导航/h3
{$titles} /div
{/if}
!--分页--
div id="pages"{$pages}/div
/div
2、phpcms v9 后台登录验证码不显示
这个是不是GD库没安装好吧。验证码都没打印出来,你用?php phpinfo();?打印出来看看两台机器安装的是否一样?
3、大家好,我用的是Phpcms 2008 sp4的版本,但是现在发布新的文章并保存以后,文章不能正常阅读
1 到栏目管理里,修改该栏目的权限,可以设置该栏目下所有内容的阅读权限
2 发布内容或修改具体的内容是,可以设置具体内容的阅读权限
3 内容的URL地址为show.php?contentid=×××,是因为该栏目的生成HTML设置不是生成HTML,而是动态。可以通过修改栏目,设置栏目的生成html 为 “是”,再批量更新URL
4、如何配置php服务器
1. 安装IIS
IIS是windows平台下比较成熟的web服务,安装方法也非常简单。
打开“开始”菜单,点击“管理您的服务器”,点击“添加或删除角色”(如图所示)。
2
进入预备步骤后直接点下一步。到达了选择角色的地方,选择“应用程序服务(IIS,ASP.net)”
3
之后点击下一步,出现附加组件的选择,一个是FrontPage Server Extentions,另外一个是ASP.net,这两项我们的环境中都不需要,不必选择,如果有需要,可以选择性安装。进入下一步,是选项总结,再下一步,进入安装过程,此时提示需要插入windows 2003(R2)的安装光盘,插入光盘后,选择光驱所在驱动器下的I386,点击确定,安装过程将会继续一直到结束,并且出现成功提示
4
完成后对IIS进行测试,打开“开始”菜单,点击“所有程序”,进入“管理工具”,点击“internet信息服务(IIS)管理器”
展开“网站”树型节点,删除默认网站,然后新建一个网站
5
进入向导后,进入下一步,为网站添加描述,也就是IIS中显示的网站标示,可以随便填写,再进入下一步,为网站配置主机头,我们是用来配置本地测试环境,所以把主机头配置为127.0.0.1
6
进入下一步,选择目录,目录需要提前建立好,然后选择即可。继续下一步,需要选择网站权限,这里只选择读取即可。之后便可完成网站新建向导了。
需要正常的浏览网站,还需要给网站的根目录文件夹指定相应的权限,首先在网站属性中查看网站的匿名访问账户是什么,然后将这个账户设置到网站的根目录文件夹,并设置相应的访问权限
7
网站的匿名访问账户是:IUSR_CBLH-DDEF00B671,为文件夹设置用户访问权限
8
权限配置好后,在目录中新建一个index.html文件,随意输入一些文字或者html代码即可。
在网站名称上右键,点击属性,进入“属性”后点击“文档”选项卡,在此添加一个index.html和index.php(index.php添加好是为了待会不必再做配置),然后点击“确定”或者“应用”保存配置。
然后在浏览器中的地址栏中输入“”或者“”,即可看到刚才我们建立的index.html中的内容。
9
安装fastcgi
IIS调试好后,就可以安装fastcgi了,首先需要下载IISfastcgi,下载地址是(),安装fastcgi非常简单,只需要同意协议后连续点击下一步即可,没有任何选项。
10
安装php
首先下载php在windows的安装包,下载地址,这里选用php-5.3.4-nts-Win32-VC9-x86.msi做例子。下载好php-5.3.4-nts-Win32-VC9-x86.msi后,双击文件安装,接受使用协议后,为php填写安装目录,这个目录是可以更换的,指向需要放置它的位置即可。之后需要选择web服务器的安装,这里选择我们先前安装的IIS fastcgi
11
下一步需要配置安装选项,这里我们除了默认的选项之外增加了pear install(如图所示)
12
再进入下一步,就可以确认安装了。
完成安装后,还需要测试一下php是否可用。
首先打开IIS管理器,然后在先前测试IIS的网站上右键,进入“属性”,点击主目录选项卡,然后将“执行权限”配置为“纯脚本”
13
然后点击旁边的“配置”,查看是否有.php扩展名,如果没有的话,需要添加一个新项,将可执行文件指向“C:WINDOWSsystem32inetsrvfcgiext.dll”,扩展名为“.php”(注意有个点),动作限制为“GET,HEAD,POST,TRACE”,点击确定即可
步骤阅读
14
做好了这些,就可以写个小脚本来测试了,在网站的目录中新建一个test.php文件,打开后输入,保存后退出。在浏览器地址栏中输入,即可看到php信息了。
4. 安装isapi_urlwriter ISAPI扩展组件
isapi_urlwriter ISAPI扩展组件主要用来做地址重写,重写后的虚拟静态地址对搜索引擎更友好。先将ISAPI_Rewrite3安装包解压到指定的文件目录中,然后进入网站属性窗口,选择窗口中的ISAPI筛选器选项卡,点击添加按钮,在弹出的窗口中选择ISAPI_Rewrite3解压目录中的ISAPI_Rewrite.dll文件为可执行文件并确定。
END
iis7.5 PHP环境配置
1
windows server 2008是基于NT6 平台的新型操作系统,其对硬件性能的发挥比起其它NT平台来说有了质的飞跃,已经开始普及到了广大用户中,而且操作较2003来说更为直观和简单,受到越来越多的好评。在这里我们要介绍windows server 2008中的php环境搭建。
安装IIS
windows server 2008的IIS版本为7.0,包括fastcgi,安装十分方便。
打开“开始”菜单→“服务器管理”,出现服务器管理界面
2
在图中黄色框中填入服务器ip,点击打开,之后提示输入用户名和密码,验证成功后完成登录服务器。
3
点击“下一步”之后,需要选择功能,这里需要比默认选项多增加一个“cgi”
4
点击“下一步”,将会需要确认一下安装的内容,此时点击安装,即可将IIS安装在操作系统中。
安装好IIS之后,需要进行一个测试,在浏览器地址栏中输入“”,如果出现IIS7的欢迎页则说明正常。接下来需要配置一个新网站,首先打开IIS管理器(“开始”→“所有程序”→“管理工具”→“internet 信息服务(IIS)管理器”)。
然后删除默认网站,在主菜单中,展开网站菜单,然后再网站名称上右键,点击删除即可
5
再新建一个网站,在“网站”上右击,点击添加网站,会出现信息网站添加的表单,首先输入网站名称,例如“stourwebcms”,路径选择为网站存放的路径,单IP的服务器可以不必选择IP,主机头填写为localhost,然后点击确定。
6
添加好网站后,需要为网站设置用户访问权限。在iis管理器左边的网站列表中选中网站,在右边的操作列表中点击“基本设置”,在弹出窗口中点击“连接为”,弹出的窗口中会出现网站的默认用户账户,也可以更改为其它的用户。确定网站的用户账户后,将此账户的访问权限设置到网站的根目录文件夹上
打开网站目录,新建一个index.html,然后用记事本打开,输入“hello stourweb”后保存,并访问本地地址“”进行测试,网页上显示出了“hello stourweb”,说明配置成功。
7
安装php
在前面已经提过,IIS7中不必单独安装fastcgi,所以,我们只需要下载php安装包进行安装即可,下载地址: 下载好后,打开安装程序,经过引导,配置好路径,来到选择“web server setup”的地方,在这里我们选择“IIS fastcgi”
8
然后点击“next”按钮,到了选择安装选项的步骤,一般安装默认的就可以了,如果要添加的话需要点击一下前面的磁盘小图标,然后选择安装,第一项是只安装选中的项目,第二项是安装所有该项目的子项目。配置好后进入下一步
9
配置好后,点击“next”然后点击“install”即可安装php。
当php安装完成后会自动在iis的处理程序映射中增加一条fastcgi到php的映射关系
安装完成后,我们还是需要测试一下,打开刚才新建的网站目录,新建一个test.php文件,用记事本打开,输入
?php
echo phpinfo();
?
保存退出,再从浏览器中访问
显示出php信息,说明php环境安装成功。
10
安装isapi_urlwriter ISAPI扩展组件
isapi_urlwriter ISAPI扩展组件主要用来做地址重写,重写后的虚拟静态地址对搜索引擎更友好。先将ISAPI_Rewrite3安装包解压到指定的文件目录中,然后双击iis的ISAPI筛选器配置项,进入网站ISAPI组件配置窗口,点击添加按钮,在弹出的窗口中选择ISAPI_Rewrite3解压目录中的ISAPI_Rewrite.dll文件为可执行文件并确定。
11
ISAPI_Rewrite3组件是一个32位的程序,因此在64位操作系统应用池进程下默认不工作,因此需要在网站所属应用进程池的高级设置中将进程池设置为32位兼容
END
Mysql数据库安装
1
下载mysql(),安装过程比较简单,首先配置路径,然后选择安装选项,一般采用默认安装的方式,之后会进入一个配置向导界面
步骤阅读
2
连续下一步,需要选择配置方式,这里选择配置方式,我们需要手动配置,所以选择detailed configuration,然后点击“下一步”
3
这里需要选择服务器类型,如果是开发用的测试环境,选择developer Machine ,如果是服务器用,则选择Server Machine,当然单一用途的服务器还可以选择dedicated mysql server machine。选择好后进入下一步
4
接下来是选择服务器使用,第一个是多功能数据库,可以使用 InnoDB engine和MyISAM engine。第二个选项,它的性能偏向于InnoDB,但是同时支持MyISAM engine。第三个选项是偏向于分析功能的MyISAM。至于这三个选项有什么区别,其实只要知道,MyISAM类型的数据库引擎可以为php提供强大的检索和分析功能。InnoDB的性能则偏重于存储。
所以如果只做web服务器的话选择第三项即可,如果是有其它用途,建议选择第一项。
5
下一步需要选择服务器上的连接数量,这里如果是测试用的小服务器可以选择最少的第一项,如果是流量巨大的网站,需要选择第二项,或者第三项自行填写。
之后是网络连接的选项,“enable TCP/IP Networking”可以按照需求来选择,如果不做集群的话可以把勾去掉,如果是在内网环境,不为mysql做路由规则是完全可以打开此项的。可以直接添加一个防火墙例外给3306端口。端口号可以选择,但是推荐默认的3306。还有一项是是否开启严谨模式,此项推荐勾选
6
点击下一步,选择默认字符集,这里选择自定义的utf8字符集
7
进入下一步,需要设定windows选项,这里推荐安装windows服务,并且自动启动。第二个选项,如果有必要,可以选择添加一个环境变量,可以方便命令行指向。
配置好后,进入下一步,需要为root用户设定密码,请设置一个比较复杂的密码以增加安全性,另外请牢记自己设置的密码,否则遗忘了后需要重置密码十分麻烦。还有一个是否允许root用户从远程登录的选项,此处最好不勾选,否则安全性将会降低。
到此配置就全部结束了,点击下一步,会出现安装总结,点击“execute”执行安装即可。
安装成功后,我们依然需要对此进行测试。
在网站中新建一个测试php文件test.php,我们使用pdo链接mysql作为测试。
输入
?php
$db=new PDO("mysql:host=localhost;dbname=test","root","刚才设置的密码");
if ($db)
{
echo "ok";
}
?
访问,如果屏幕上打印出了ok,表示mysql安装成功。
END
安全配置建议
1
安全软件
一款好的安全软件能有效防御来自计算机病毒、恶意软件和木马的威胁,但能用于服务器的安全软件并不多,其中大部分都是收费的,平常个人所用的金山毒霸和360等不能安装到windows server系列的服务器操作系统上,但他们都有相应的服务器版本并且提供免费升级,在他们的官网上面都能够找到。
2
防火墙
合理的配置好防火墙能有效的阻止各种恶意入侵,因为各种网络入侵都是通过相应的网络端口完成的。网络端口是服务器上的各种网络服务开启的,他们对外提供各种网络服务,如http、ftp、smtp等。自己的服务器上需要提供哪些网络服务就只开启这些服务的相应端口,如服务器上提供网站服务,就需要开启http的80端口,如需要提供ftp服务就要开启21端口;有些网络服务不需要对外提供服务就不应该开启,如sql server数据库不需要对外提供服务,就应该在防火墙中关闭掉1433端口。
Windows sever 2003和2008都自带防火墙,其实能简单有效的利用这些自带的防火墙就能有效的完成端口的开闭管理。
l Windows server 2003服务器防火墙配置
1) 鼠标右键单击“网上邻居”,选择“属性”。
2) 然后鼠标右键单击“本地连接”,选择“属性”。如图选择“高级”选项,选中“Internet连接防火墙”,确定后防火墙即起了作用。
点击“设置(G)...”按钮可进行高级设置。其中列出了可用的网络服务,选中后允许其打开网络端口并通信,反之则关闭其网络通信;单击“添加”则可以增加网络服务或打开指定的网络端口
3
Windows server 2008服务器防火墙配置
1) 在控制面板中打开网络和共享中心
2) 点击“windows防火墙”弹出防火墙配置窗口,在此窗口中要确认防火墙服务已经开启
3) 单击“允许程序或功能通过Windows防火墙”弹出网络服务端口配置窗口,在此窗口中可以选择允许打开端口并通信的网络服务,单击“允许运行另一程序”来自定义开启某一网络服务或端口
4
用户管理
系统中用户的数量能越少越好,并且每个用户都被用于特定的功能,如可以新建一个专门用于对网站进行匿名授权的账户(如条件允许,可以为每个网站新建一个独立的账户进行分别授权,这些能够隔离开各网站的授权,提高各网站的安全性,不至于一个网站被入侵后能够有权限访问到其它网站的文件目录)。另外最重要的一点是要为每个账户设置一个独立且复杂的密码,防止账户密码被猜解和穷举。
5
文件系统权限管理
l C盘只给administrators 和system权限,其他的权限不给,其他的盘也可以这样设置,这里给的system权限也不一定需要给,只是由于某些第三方应用程序是以服务形式启动的,需要加上这个用户,否则造成启动不了。
l Windows目录要加上给users的默认权限,否则ASP和ASPX等应用程序就无法运行。其实没有必要单独设置Instsrv和temp等目录权限。
l 另外在c:/Documents and Settings/这里相当重要,后面的目录里的权限根本不会继承从前的设置,如果仅仅只是设置了C盘给administrators权限,而在All Users/Application Data目录下会 出现everyone用户有完全控制权限,这样入侵这可以跳转到这个目录,写入脚本或只文件,再结合其他漏洞来提升权限;
譬如利用serv-u的本地溢出提升权限,或系统遗漏有补丁,数据库的弱点,甚至社会工程学等等N多方法,在用做web/ftp服务器的系统里,建议是将这些目录都设置的锁死。其他每个盘的目录都按照这样设置,每个盘都只给adinistrators权限。
另外,还将:
net.exe
cmd.exe
t
netstat.exe
regedit.exe
at.exe
attrib.exe
cacls.exe
format.exe
这些文件都设置只允许administrators访问。
l 网站的目录最好独立到一个磁盘中,新建一个为网站匿名访问而独立授权的账户,让此账户可以访问和编辑此目录,移除其它不必要的账户对此目录的访问权限,能有效防止网站被入侵后从而涉及到整个系统被控制
日常维护建议
1
定期运行安全软件进行快速扫描
定期运行一下安全软件,可以看到安全软件的引擎或病毒库是否已经更新到了最新版本,如果没有可以即时查找原因,看是否是安全软件未运行、升级端口被禁用或其它原因,虽然安全软件可以在后台即时扫描各种文件操作,以防止病毒入侵,但有些恶意软件、流氓软件或插件则不是实时防护的,虽然这些软件不会造成服务器宕机,但也会影响服务器性能。
2
定期检查防火墙端口配置
随着服务器上的网络服务越来越多,需要打开的网络端口也越来越多,但有些端口是不需要开放的,例如你安装了一个数据库软件(mysql、oracle等),这些数据库服务很可能只需要在你服务器的内部访问,就完全没有必要让其通过防火墙,这样能够提高服务器的安全,服务器对外提供的端口越少越好;
虽然在安装网络服务的过程中,防火墙会提示你有网络端口正在打开,是否允许通过防火墙,但有些管理员没有细心看提示,直接就同意了,造成了大量没有必要打开的网络端口被打开了,特别是一些木马或恶意软件会混水摸鱼,伪装提示信息来诱骗管理员打开网络端口,造成大量的安全隐患。进入防火墙配置界面,选择相应的端口或网络服务,点击“详细信息”则可以看到此项应用的详细信息,根据这些信息来判断其是否应该开启这个端口。
3
任务管理器中观察有无可疑进程,了解系统资源使用情况
任务管理器可以简单并快速的了解服务系统资源的使用情况,并即时查看系统运行的进程和他们占用的系统资源,根据服务器上已开启的各种应用的服务来判断哪些进程是非法的,哪些进程占用的系统资源过多。了解到这些信息后就可以即时的对服务器进行调整,特别是占用资源过多的进程进行分析,看是否有什么异常并即时进行调整。
l 观察系统进程,并自定义进程属性
4
查看网络使用情况
查看系统资源使用情况
检查IIS,了解网站安装情况
随时了解服务器上网站的安装状况,并做以下检查:
1、看各个网站定义的主机头是否异常
2、 绑定的域名是否完整
3、 主目录设置是正确
4、用户权限设置是否合理
5、 查看IIS的应用程序池设置是否合理,每个池下面托管的网站是否过多,是否需要设置新的应用池,是否有多余的应用池可以删除。
查看系统日志,仔细检查错误、警告日志发生的原因,并急时修复相应的问题。
检查系统用户,查看有无多余,可疑用户账户,查看每个账户所属的用户组,特别是administrators组下面的用户。服务器被入侵时会出现一些欺骗性的账户并被加入到administrators组中,特别留心新建的多余账户,弄清这些账户的用途,如果发现是入侵者建立的账户,要即时查找账户是被创建的原因,并修复相应的漏洞。
检查文件系统,确保磁盘被合理分区,各个分区应该有各自的功能,如系统、数据库、网站、备份等。各个分区的用户授权是不相同的,如系统、备份等不需要网站的专门授权账户访问,数据库分区需要对数据库账户进行单独的授权等。既然规划好了文件分区和功能,并进行了相应的授权,就要防止文件被乱放,以免造成安全隐患。
还要经常检查各种新建的文件夹和文件(特别是来历不明,名称畸形的隐藏文件夹和文件)这些都有可能是入侵者留下的入侵痕迹。
清除垃圾文件,随时系统运行时间的增加,会产生很多的临时文件和日志文件,占用宝贵的磁盘资源,如果磁盘的可用空间过小(特别是系统盘)还会影响服务器性能。
1、临时文件(安装程序、系统升级、应用程序等产生的)产生的,主要在系统盘,可以看哪些文件夹的体积异常大,可分析其内部文件,确认是临时文件后将其删除
2、 日志文件,主要是IIS产生的,这些日志文件对于查看网站运行状态、访问历史很有用,但日志有时效性,如果超过其三个月就没有什么用处了,但它会占用大量的磁盘空间,所以需要定期将其删除。
定期检查磁盘状态并进行碎片整理,随着系统运行时间的增长,特别是大量的IO操作后,磁盘上会产生大量的文件碎片,这些碎片过多则会严重影响服务器性能,所以定期(建议一个月)进行磁盘碎片检查,如果系统提醒需要进行碎片整理,则进行整理。
及时升级操作系统补丁,操作系统有各种大量的补丁,特别是一些重要的安全补丁需要即时升级,这样会有效防止黑客和病毒入侵。
及时备份重要的文件、应用、数据库。备份分为本地备份和异地备份,有条件的可以进行异地备份,备份是为了以防万一,当数据丢失或应用损坏时,备份就是救命稻草,因此合理的备份计划是非常有必要的。
不要随意下载安装来历不明的软件,特别是需要连接网络或需要打开端口的。现在网上许多的程序都内置有木马或恶意程序,所以不要下载和安装网上的不明软件,特别是一些小网站的。
END
5、php人教版小学语文晦
1. 引言…. 2
2. 适用范围…. 2
3. 标准化的重要性和好处…. 3
4. PHP编码规范与原则…. 3
4.1. 代码标记… 3
4.2. 注释… 3
4.3. 书写规则… 4
4.3.1. 缩进… 4
4.3.2. 大括号{}、if和switch. 4
4.3.3. 运算符、小括号、空格、关键词和函数… 5
4.3.4. 函数定义… 6
4.3.5. 引号… 6
4.3.6. 多语言问题… 7
4.4. 命名原则… 8
4.4.1. 变量、对象、函数名… 8
4.4.2. 常量… 8
4.5. 变量的初始化与逻辑检查… 8
4.6. 安全性… 9
4.7. 兼容性… 9
4.8. 代码重用… 10
4.9. 其他细节问题… 10
4.9.1. 包含调用… 10
4.9.2. 错误报告级别… 11
5. 数据库设计…. 11
5.1. 字段… 11
5.1.1. 表和字段命名… 11
5.1.2. 字段结构… 11
5.2. SQL语句… 12
5.3. 性能与效率… 13
5.3.1. 定长与变长表… 13
5.3.2. 运算与检索… 13
5.3.3. 结构优化与索引优化… 14
5.3.4. 查询优化… 14
5.3.5. 兼容性问题… 16
6. 模板设计…. 16
6.1. 代码标记… 16
6.2. 书写规则… 16
6.2.1. HTML. 16
6.2.2. 变量… 16
6.2.3. 语言元素… 17
6.2.4. 缩进… 17
7. 文件与目录…. 17
7.1. 文件命名… 17
7.2. 目录命名… 18
7.3. 空目录索引… 18
1. 引言
本规范由编程原则组成,融合并提炼了开发人员长时间积累下来的成熟经验,意在帮助形成良好一致的编程风格。以达到事半功倍的效果,如果有需要本文档会不定期更新。
版权: 陕西玖肆陆陆网络科技有限公司,保留所有权利
最后更新日期:年11月20日 2006
2. 适用范围
如无特殊说明,以下规则要求完全适用于phpcms项目,同时也可大部分适用于公司其他PHP项目。
3. 标准化的重要性和好处
当一个软件项目尝试着遵守公共一致的标准时,可以使参与项目的开发人员更容易了解项目中的代码、弄清程序的状况。使新的参与者可以很快的适应环境,防止部分参与者出于节省时间的需要,自创一套风格并养成终生的习惯,导致其它人在阅读时浪费过多的时间和精力。而且在一致的环境下,也可以减少编码出错的机会。缺陷是由于每个人的标准不同,所以需要一段时间来适应和改变自己的编码风格,暂时性的降底了工作效率。从使项目长远健康的发展以及后期更高的团队工作效率来考虑暂时的工作效率降低是值得的,也是必须要经过的一个过程。标准不是项目成功的关键,但可以帮助我们在团队协作中有更高的效率并且更加顺利的完成既定的任务。
1. 程序员可以了解任何代码,弄清程序的状况
2. 新人可以很快的适应环境
3. 防止新接触PHP的人出于节省时间的需要,自创一套风格并养成终生的习惯
4. 防止新接触PHP的人一次次的犯同样的错误
5. 在一致的环境下,人们可以减少犯错的机会
6. 程序员们有了一致的敌人
4. PHP编码规范与原则
4.1.代码标记
PHP程序可以使用或来界定 PHP 代码,在HTML页面中嵌入纯变量时,可以使用这样的形式。
近年来PHP开发组一直倡导代码规范化和标准化,未来版本PHP可能会开始不建议使用甚至取消和这种速记形式,因此为了加强程序兼容性,在发布之前我们将统一把
4.2.注释
注释是对于那些容易忘记作用的代码添加简短的介绍性内容。请使用 C 样式的注释“”和标准 C++ 注释“//”。
程序开发中难免留下一些临时代码和调试代码,此类代码必须添加注释,以免日后遗忘。所有临时性、调试性、试验性的代码,必须添加统一的注释标记“//debug”并后跟完整的注释信息,这样可以方便在程序发布和最终调试前批量检查程序中是否还存在有疑问的代码。例如:
$num = 1;
$flag = TRUE; //debug 这里不能确定是否需要对$flag进行赋值
if(empty($flag)) {
//Statements
}
4.3.书写规则
4.3.1. 缩进
每个缩进的单位约定是一个TAB(8个空白字符宽度),需每个参与项目的开发人员在编辑器(UltraEdit、EditPlus、ZendStudio等)中进行强制设定,以防在编写代码时遗忘而造成格式上的不规范。
本缩进规范适用于PHP、JavaScript中的函数、类、逻辑结构、循环等。
4.3.2. 大括号{}、if和switch
首括号与关键词同行,尾括号与关键字同列;
if结构中,if和elseif与前后两个圆括号同行,左右各一个空格,所有大括号都单独另起一行。另外,即便if后只有一行语句,仍然需要加入大括号,以保证结构清晰;
switch结构中,通常当一个case块处理后,将跳过之后的case块处理,因此大多数情况下需要添加break。break的位置视程序逻辑,与case同在一行,或新起一行均可,但同一switch体中,break的位置格式应当保持一致。
以下是符合上述规范的例子:
If ($condition)
{
switch ($var)
{
case 1: echo ‘var is 1’; break;
case 2: echo ‘var is 2’; break;
default: echo ‘var is neither 1 or 2’; break;
}
}
else
{
switch ($str)
{
case ‘abc’:
$result = ‘abc’;
break;
default:
$result = ‘unknown’;
break;
}
}
4.3.3. 运算符、小括号、空格、关键词和函数
每个运算符与两边参与运算的值或表达式中间要有一个空格,唯一的特例是字符连接运算符号两边不加空格;
左括号“(” 应和函数关键词紧贴在一起,除此以外应当使用空格将“(”同前面内容分开;
右括号“)”除后面是“)”或者“.”以外,其他一律用空格隔开它们;
除字符串中特意需要,一般情况下,在程序以及HTML中不出现两个连续的空格;
任何情况下,PHP程序中不能出现空白的带有TAB或空格的行,即:这类空白行应当不包含任何TAB或空格。同时,任何程序行尾也不能出现多余的TAB或空格。多数编辑器具有自动去除行尾空格的功能,如果习惯养成不好,可临时使用它,避免多余空格产生;
每段较大的程序体,上、下应当加入空白行,两个程序块之间只使用1个空行,禁止使用多行。
程序块划分尽量合理,过大或者过小的分割都会影响他人对代码的阅读和理解。一般可以以较大函数定义、逻辑结构、功能结构来进行划分。少于15行的程序块,可不加上下空白行;
说明或显示部分中,内容如含有中文、数字、英文单词混杂,应当在数字或者英文单词的前后加入空格。
根据上述原则,以下举例说明正确的书写格式:
$result = (($a + 1) * 3 / 2 + $num)).’Test’;
$condition ? func1($var) : func2($var);
$condition ? $long_statement
: $another_long_statement;
if ($flag)
{
//Statements
//More than 15 lines
}
Showmessage(‘请使用 restore.php 工具恢复数据。’);
4.3.4. 函数定义
l 参数的名字和变量的命名规范一致;
l 函数定义中的左小括号,与函数名紧挨,中间无需空格;
l 开始的左大括号另起一行;
l 具有默认值的参数应该位于参数列表的后面;
l 函数调用与定义的时候参数与参数之间加入一个空格;
l 必须仔细检查并切实杜绝函数起始缩进位置与结束缩进位置不同的现象。
例如,符合标准的定义:
function authcode($string, $operation, $key = '')
{
if($flag)
{
//Statement
}
//函数体
}
不符合标准的定义:
function authcode($string,$operation,$key = '') {
//函数体
}
4.3.5. 引号
PHP中单引号和双引号具有不同的含义,最大的几项区别如下:
单引号中,任何变量($var)、特殊转义字符(如“\t \r\n”等)不会被解析,因此PHP的解析速度更快,转义字符仅仅支持“\’”和“\\”这样对单引号和反斜杠本身的转义;
双引号中,变量($var)值会代入字符串中,特殊转义字符也会被解析成特定的单个字符,还有一些专门针对上述两项特性的特殊功能性转义,例如“\$”和“{$array[‘key’]}。这样虽然程序编写更加方便,但同时PHP的解析也很慢;
数组中,如果下标不是整型,而是字符串类型,请务必用单引号将下标括起,正确的写法为$array[‘key’],而不是$array[key],因为不正确的写法会使PHP解析器认为key是一个常量,进而先判断常量是否存在,不存在时才以“key”作为下标带入表达式中,同时出发错误事件,产生一条Notice级错误。
因此,在绝大多数可以使用单引号的场合,禁止使用双引号。依据上述分析,可以或必须使用单引号的情况包括但不限于下述:
l 字符串为固定值,不包含“\t”等特殊转义字符;
l 数组的固定下标,例如$array[‘key’];
l 表达式中不需要带入变量,例如$string = ‘test’;,而非$string = “test$var”;
例外的,在正则表达式(用于preg_系列函数和ereg系列函数)中,phpcms全部使用双引号,这是为了人工分析和编写的方便,并保持正则表达式的统一,减少不必要的分析混淆。
数据库SQL语句中,所有数据都不得加单引号,但是在进行sql查询之前都必须经过intval函数处理;所有字符串都必须加单引号,以避免可能的注入漏洞和SQL错误。正确的写法为:
$catid = intval($catid);
SELECT * FROM phpcms_member WHERE username=’$_username’ ANDcatid=$catid;
所有数据在插入数据库之前,均需要进行addslashes()处理,以免特殊字符未经转义在插入数据库的时候出现错误。phpcms中如果已经引入了文件common.inc.php,则所有通过 GET, POST,FILE,取得的变量默认情况下已经使用了addslashes()进行了转义,不必重复进行。如果数据处理必要(例如用于直接显示),可以使用stripslashes() 恢复,但数据在插入数据库之前必须再次进行转义。
缓存文件中,一般对缓存数据的值采用 addcslashes($string, '\'\\')进行转义。
4.3.6.
4.4.命名原则
命名是程序规划的核心。古人相信只要知道一个人真正的名字就会获得凌驾于那个人之上的不可思议的力量。只要你给事物想到正确的名字,就会给你以及后来的人带来比代码更强的力量。
名字就是事物在它所处的生态环境中一个长久而深远的结果。总的来说,只有了解系统的程序员才能为系统取出最合适的名字。如果所有的命名都与其自然相适合,则关系清晰,含义可以推导得出,一般人的推想也能在意料之中。
就一般约定而言,类、函数和变量的名字应该总是能够描述让代码阅读者能够容易的知道这些代码的作用。形式越简单、越有规则,就越容易让人感知和理解。应该避免使用模棱两可,晦涩不标准的命名。
4.4.1. 变量、对象、函数名
变量、对象、函数名一律为小写格式,除非必要,单词之间一般不使用下划线“_”进行分割;
以标准计算机英文为蓝本,杜绝一切拼音、或拼音英文混杂的命名方式;
变量命名只能使用项目中有据可查的英文缩写方式,例如可以使用$data而不可使用$data1、$data2这样容易产生混淆的形式,应当使用$articledata、$userdata这样一目了然容易理解的形式;
可以合理的对过长的命名进行缩写,例如$bio($biography),$tpp($threadsPerPage),前提是英文中有这样既有的缩写形式,或字母符合英文缩写规范;
必须清楚所使用英文单词的词性,在权限相关的范围内,大多使用$enable***、$is***、的形式,前者后面接动词,后者后面接形容词。
4.4.2. 常量
常量应该总是全部使用大写字母命名,少数特别必要的情况下,可使用划线来分隔单词;
PHP 的内建值 TRUE、FALSE 和NULL必须全部采用大写字母书写。
4.5.变量的初始化与逻辑检查
任何变量在进行累加、直接显示或存储前必需进行初使化,例如:
$number = 0; //数值型初始化
$string = ‘’; //字符串初始化
$array = array(); //数组初始化
判断一个无法确定(不知道是否已被赋值)的变量时,可用empty()或isset(),而不要直接使用if($switch)的形式,除非你确切的知道此变量一定已经被初始化并赋值。
empty()和isset()的区别为:
l bool empty(mixed var)
n 如果 var 是非空或非零的值,则 empty() 返回FALSE。换句话说,""、0、"0"、NULL、FALSE、array()、var $var;以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。
l bool isset(mixed var[, mixed var[, ...]])
n 如果 var 存在则返回 TRUE,否则返回 FALSE。
n 如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL的变量,将返回 FALSE。同时要注意的是一个 NULL 字节("\0")并不等同于 PHP 的 NULL 常数。
判断一个变量是否为数组,请使用is_array(),这种判断尤其适用于对数组进行遍历的操作,例如foreach(),因为如果不事先判断,foreach()会对非数组类型的变量报错;
判断一个数组元素是否存在,可使用isset($array[‘key’]),也可使用empty(),两者异同见上。
4.6.安全性
PHP中的变量不并不像C语言那样需要事先声明,解释器会在第一次使用时自动创建他们,同样类型也不需要指定,解释器会根据上下文环境自动确定。从开发人员的角度来看,这无疑是一种极其方便的处理方法。一个变量被创建了,就可以在程序中的任何地方使用。这导致的结果就是开发人员工经常不注意初始化变量。因此,为了提高程序的安全性,我们不能相信任何没有明确定义的变量。所有的变量在定义使用前要初使化以防止恶意构造提交的变量覆盖程序中使用的变量。
细节可以阅读()这篇文档,该文档里罗列了PHP常见的安全问题,阅读该文档是非常有必要的!
4.7.兼容性
代码设计应当兼顾PHP 高低版本的特性,当前,应仍然以PHP 4.3.0作为最低通过平台,尽量不使用高版本PHP新增的函数、常数或者常量。如果使用只在高版本才具备的函数,必须对其进行二次封装,自动判断当前PHP版本,并自行编写低版本下的兼容代码;
对于个别函数,参数要求或者代码要求应当以较为严格的PHP版本为准;
除非必要,不要使用PHP扩展模块中的函数。使用时应当加入必要的判断,当服务器环境不支持此函数的时候,进行必要的处理。文档和程序中的功能说明中,也应加上兼容性说明。
4.8.代码重用
代码的有效重用可以减少效率的损失与资源的浪费。在开发软件项目时为了避免重复劳动和浪费时间。开发人员应尽量提高现有代码的重用率,同时将更多的精力用在新技术的应用和新功能的创新开发上面。
l 在需要多次使用代码,并且对于您希望实现的任务没有可用的内置 PHP函数时,不吝啬定义函数或类。开发者须根据功能、调用情况,将函数放置于include目录并以.func.php作为函数文件后缀,将类放置于include/class目录。超过3行,实现相同功能的程序切勿在不同程序中多次出现,这是无法容忍和回避的问题;
l在任何时候都不要出现同一个程序中出现两段或更多的相似代码或相同代码,即便在不同程序中,也应尽力避免。开发者应当总是有能力找到避免代码大段(超过10行)重复或类似的情况。
需要强调的是,本部分虽然篇幅较短,但却是十分需要经验,并将花费开发者大量时间和精力去进行优化的部分,任何产品开发者必须时刻清楚和理解代码重用的重要性和必要性,切实在增强产品效率、逻辑性和可读性上下功夫,这是一名优秀软件开发者所必须具备的基本素质。
4.9.其他细节问题
4.9.1. 包含调用
包含调用程序文件,请全部使用require_once,以避免可能的重复包含问题;
包含调用缓存文件,由于缓存文件无法保证100%正确打开,请使用include_once或include。在必要时,可以使用@include_once或@include的方式,以忽略错误提示;
包含和调用代码中,须以PHPCMS_ROOT.’/’开头,应避免直接写程序文件名(例如:require_once‘x.php’;)的做法;
所有被包含和调用的程序文件,包括但不限于程序、缓存或模板,通常其不能被直接URL请求。phpcms通过在./include/common.inc.php中定义一个标记性常量IN_PHPCMS,来判断程序是否被合法调用。因此,在除了./include/common.inc.php以外的任何一个被包含和调用的程序文件中,需要包含以下内容,以使得访问者无法直接通过URL请求该文件:
defined('IN_PHPCMS') or exit('Access Denied');
4.9.2. 错误报告级别
在软件开发和调试阶段,请使用error_reporting(E_ALL);作为默认的错误报告级别,此级别最为严格,能够报告程序中所有的错误、警告和提示信息,以帮助开发者检查和核对代码,避免大多数安全性问题和逻辑错误、拼写错误。error_reporting()可以在./include/common.inc.php的头几行进行设置。
在软件发布时,请使用error_reporting(E_ERROR | E_WARNING |E_PARSE);作为默认的错误报告级别,以利于用户使用并将无谓错误提示信息降至最低。
5. 数据库设计
5.1.字段
5.1.1. 表和字段命名
表和字段的命名以前面《4.4命名原则》的约定为基本准则。
所有数据表名称,只要其名称是可数名词,则必须以复数方式命名,例如:phpcms_member(用户表);存储多项内容的字段,或代表数量的字段,也应当以复数方式命名,例如:hits(查看次数)、items(内容数量)。
当几个表间的字段有关连时,要注意表与表之间关联字段命名的统一,如phpcms_article_1表中的articleid与phpcms_article_data_1表中的articleid。
代表id自增量的字段,通常用以下几种形式:
l 一般情况下,使用全称的形式,例如userid、articleid;
l 没有功能性作用,只为管理和维护方便而设的id,可以使用全称的形式,也可只将其命名为id。
篇幅所限,无法一一赘述,但所有与表、字段相关的命名,请务必大量参考phpcms现有字段的命名方式,以保证命名的系统性和统一性。
5.1.2. 字段结构
允许NULL值的字段,数据库在进行比较操作时,会先判断其是否为NULL,非NULL时才进行值的必对。因此基于效率的考虑,所有字段均不能为空,即全部NOTNULL;
预计不会存储非负数的字段,例如各项id、发帖数等,必须设置为UNSIGNED类型。UNSIGNED类型比非UNSIGNED类型所能存储的正整数范围大一倍,因此能获得更大的数值存储空间;
存储开关、选项数据的字段,通常使用tinyint(1)非UNSIGNED类型,少数情况也可能使用enum()结果集的方式。tinyint作为开关字段时,通常1为打开;0为关闭;-1为特殊数据,例如N/A(不可用);高于1的为特殊结果或开关二进制数组合(详见phpcms中相关代码);
MEMORY/HEAP类型的表中,要尤其注意规划节约使用存储空间,这将节约更多内存。例如cdb_sessions表中,就将IP地址的存储拆分为4个tinyint(3)UNSIGNED类型的字段,而没有采用char(15)的方式;
任何类型的数据表,字段空间应当本着足够用,不浪费的原则,数值类型的字段取值范围见下表:
字段类型 存储空间(b) UNSIGNED 取值范围
tinyint 1 否 -128~127
是 0~255
smallint 2 否 -32768~32767
是 0~65535
mediumint 3 否 -8388608~8388607
是 0~16777215
int 4 否 -2147483648~2147483647
是 0~4294967295
bigint 8 否 -9223372036854775808
~9223372036854775807
是 0
~18446744073709551615
5.2.SQL语句
所有SQL语句中,除了表名、字段名称以外,全部语句和函数均需大写,应当杜绝小写方式或大小写混杂的写法。例如select * fromphpcms_member;是不符合规范的写法。
很长的SQL语句应当有适当的断行,依据JOIN、FROM、ORDER BY等关键字进行界定。
通常情况下,在对多表进行操作时,要根据不同表名称,对每个表指定一个1~2个字母的缩写,以利于语句简洁和可读性。
如下的语句范例,是符合规范的:
$result = $db-query(”SELECT m.*, i.*
FROM “.TABLE_MEMBER.” m, “.TABLE_MEMBERINFO.” i
WHERE m.userid=i.userid AND m.userid=’$_userid’);
望采纳!
phpcms阅读权限的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于discuz阅读权限、phpcms阅读权限的信息别忘了在本站进行查找喔。