首页 > 代码库 > 20170103需要修改的地方
20170103需要修改的地方
商品分类的CRUD
------指导老师 冰哥
1.为了防止SQL注入,在控制器中不要使用PHP原生的$_GET、$_POST,而是要使用封装好的I方法
2.在程序中尽量不要出现die(),影响程序的顺序执行
3.THINKPHP针对单表操作,所以控制器与模型的命名都要与表进行相关联。
4.单条if语句可以省略{}
5.关于页面回显,对于输入过回呈现在URL上面的内容,可以通过在模板中始终{:I(‘name’)}来显示你曾经输入过的信息,可以通过session或者变量辅助
6.关于模板页面跳转,不能过分依赖程序的url模式,可以使用{:U(‘MODULE/CONTROLLER/ACTION’),array(‘parameter’=>value)}进行跳转的时候携带参数
7.对于后台体验,不需要太好,要考虑程序的开发效率。
8.关于TP的COMMON,一般来说,COMMON里存放的是公共配置文件CONF,公共函数类,比如function.php,模型类Model,一般来说,TP是针对单表操作的,使用D实例化模型的时候,可以调用COMMON文件里的模型类
9.关于查询,可以查找这个值在表中是否存在,通过boolean进行判断,而不是把表中所有的数据取出来,再进行比对。
10.尽量避免TP原来 是error success调用模板页面,因为!!!丑!!!。
但是当调用success、error的时候可以传入第三个参数为true,就会使用ajaxreturn方法,自动json_encode()并且exit;
关于删除提交,数据交互尽量通过ajax来进行传值和跳转到相应的方法,比如location.href.然后在根据后端传递的状态值来在前端进行操作成功或者失败的提示。不要过分依赖浏览器
11.数据表的设计,可以使用timestamp来对时间进行维护,并且是mysql进行自动维护,还不是过分依赖于程序的执行
12.关于not null,一般在字段设置为not null的时候,要给予一个默认值,不要过分依赖于程序。
13.在使用TP实例化表或者其他命名的时候,遵循大驼峰命名法。
14.前端表单,要进行数据验证,使用js或者h5表单验证都可以。而不是过分依赖于后端的验证,但是要考虑到中文字符的截取的问题。
15.表单重复提交的问题,多次提交表单,程序就会多次执行,影响效率。可以使用layer.layui.com是遮罩效果,或者隐藏或者屏蔽提交按钮
16.在数据库中自动设置当前记录的时间为当前时间,首先是将字段类型设置为TIMESTAMP ,并且设置为可以为空,默认值为CURRENT_TIMESTAMP
16.最好改一下THINKPHP原有的界定符号
17.THINKPHP的解析流程:特殊标签是先到服务器上解析,比如把{:U(‘XXX’)}先解析成
<?php echo /xxxx/xxxx/xxx.html;?>然后才js才能解析到,但是它是一个字符串,在当做ajax的url跳转的时候,需要加上引号。
18.尽量使用短路与表达式,a&&b=2,当a整个条件成立的时候,再去执行b=2,这样就可以省去if判断,并且是可以写在一行的。
19.在建立函数的时候,如果有默认值的参数,一定要放在最后。
20.客户删除可能会出现误操作,所以要给个confirm()确认框
21.函数,不能拆的过于散。不要为了封装而封装
22.关于添加和删除,可以通过判断是否有id才决定进行add或者edit
23.关于搜索,post可以回显,但是当跳转页面的时候,post的参数会丢失,所以需要用get。
24.如果我是修改第三页信息,修改完以后客户肯定还是想直接看到第三页的,所以window.location.href = http://www.mamicode.com/‘XXXX’只会跳转到指定页面,而go.back(),go(-1)会有未知错误,使用document.referrer,返回载入当前文档的文档的URL。
25.在开发阶段可以开启page.trace才查看性能。
26.不要写过多的id,造成变量污染,可以使用诸如data-id这样的属性还保存需要的值,在使用jquery的情况下,可以通过$(this).attr(‘attrname’);来获取这个属性的值。
27.可以通过data-*这样的自定义属性,然后通过attr(‘data-*)来获取相应值
20170103需要修改的地方