您的位置:首页 > 编程语言 > PHP开发

php开发注意细节

2012-08-22 14:04 239 查看
1.使用url传参时对参数的值使用urlencode,当我们通过$_GET[]获取参数值时系统将自动将参数值转换为未使用urlencode前的值,而不需要我们使用urldeconde进行解析 urlencode(除了“-_.”之外的所有非字母数字字符都将被替换成百分号“%”后跟两位十六进制数。 urlencode和rawurlencode的区别:urlencode将空格编码为加号“+”,rawurlencode将空格编码为加号“%20”。两种编码:中文
-> GB2312的Encode -> %D6%D0%CE%C4 中文 ->UTF-8的Encode -> %E4%B8%AD%E6%96%87 )

2.javascript对字符串的严格定义,当我们document.write("$sString"); $sString里面不允许出现换行符(\n )我们需要写个函数清除\n,否则程序将会报错

3.当我们使用$_GET[] 或者$_POST[] 获取参数时,应先对参数进行处理 若参数是整型应intval 若为字符串的应trim 或者这样 $nPage=isset($_GET['page'])?intval($_GET['page']):'';

4.进行某种操作之前,应对各个参数进行验证(不要嫌烦,我们应该相信只有%20的人进行的是正常操作,而%80进行的是恶意操作,对此,我们应时时防范),以防他人(骇客之类的)利用我们对参数的疏忽验证而实现对我们系统进行一系列的破坏

5.使用mvc框架开发时,action的名字(控制的方法名)和模板的名字一定要一致或者你也可以定义一个防止该错误发生的通用的函数,以防错误百出

6.当我们想入门下一 个页面(使用表单提交的页面)的时候,这时我们可以填写表单提交也可以自己构造出url(最好不要使用pathinfo模式,建议手动构造普通模式的url,骇客也是通过类似的方法寻找程序的漏洞),这种情况一般出现在用户注册邮箱验证、用户找回密码邮箱验证 一般都会与邮箱有关.

7.使用控制器之间的相互访问(也就是对象之间的访问---->可以使用设计模式之工厂模式 单一模式 观察者模式 策略模式等这些模式开发),可以减少代码的冗余

8.通过javascript(window.location.href="url")、<script type="text/javascript" src="url"></script>或<a href="url">标签</a>直接访问控制器

9.页面跳转需注意的是:防止数据重写,否则就会变成--提交---->修改数据库数据---->调回上一个页面---->又在再次修改数据库数据(在此得不到我们想要得到的数据)

10.表单隐藏元素的使用:一般使用在需要操作多个步骤才能完成的功能项(如:用户申诉.用户跳转支付页面) 都是一些在最后一步(不一定是最后一步)需要使用的,而这个值在这一步是无法获取到得,只能通过它前面的某个步骤才能获取得到,所以这时我们需要利用表单隐藏元素传值

11.使用DIRECTORY_SEPARATOR以便程序能适应多种操作系统 define('DS',DIRECTORY_SEPARATOR);

12.尽量使用cookie(session会造成服务器崩溃特别是数据量大(可以理解为数据小,但是量大,结果肯定也是大的)的时候),一个cookie变量存储多个值的方式(使用explode分解cookie值和implode连接值成一个字符串存入一个cookie变量中),购物车也是通过类型的方法实现的,使用cookie存重要数据的时候一定要加密(用户名信息);

13.尽量避免使用viewnumber=viewnumber+1,viewnumber=sql语句这样可以实现系统数据更新数据时造成错误的自动修复;

14.当你在使用if else的时候,先想想是否可以使用if实现,这样可以减少代码的冗余,但也不要使程序出现漏洞。

15.模版内嵌循环输出内容(说说、文字、评论等)需注意定义的html元素id值应是动态的,否则使用getElementById获取元素对象会出现问题,javascript代码也会发生错误;

16.div盒子插入内容,如我们在盒子里插入textarea元素对象,但我们要求textarea元素对象能实现自适应高度(按照需求我们需要利用javascript
clone一个新的textarea),这时我们操作的对象应该是clone的那个。

17.对url(自己构造的url通过get传值需要对参数值进行编码php--urlencode javascript---encodeURIComponent() )和表单提交的内容进行过滤,一般是过滤html标签----使用htmlspecialchars,还有就是防止sql注入----使用addslashes

18.使用$_SERVER['PATH_INFO']前一定要判断是否为空 如empty($_SERVER['PATH_INFO']);使程序更加的安全

19.主题最后回复功能实现可在主题表增加一字段,用来存放该主题的最后回复内容、时间、人物等信息(这些我们可以使用serialize来实现)。

20.使用框架开发应用程序,若框架支持模型关联大家不要太依赖关联查询了,对于数据量大的表索引的速度将会更快。如:小组与小组帖子分类的查询,当小组贴子分类表数据大时若使用关联则查询速度将会变得很慢。

21.网页动态背景特效可以使用:用JS实现或通过控制器传值实现(如分类背景特效)。

22.模型取消自动填充$oGrouptopic->setAutoFill(false);

陆续更新中.......
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: