新版二手市场开发总结

新版二手市场,前前后后有php的alex、honor、海彪,以及前端的雪欢、曾梅、素婷,还有UI组Cici、Helium参与了开发和设计。
历时1年多。
最开始的目标是,响应式、对接APP以及针对旧版的问题做改进。
后来因为对版面不满意以及工作室新来了UI和前端,又让UI组重新设计了版面,前端开发静态页面。
由于时间过得太久,后台同学都换了几个,各组分工、对接问题严重。眼看着项目要胎死腹中,于是趁着在写毕设的自由时间,我接手了后续的开发。
在接手后发现了一些问题,总结如下:
1、代码不整洁,前端留着好多console.log。后台同学对thinkphp的模板继承不熟悉,代码有重复
2、存在sql注入漏洞。在写登录查询条件时,用where name=’xx’ and pwd = ‘xx’,对参数也没过滤,直接让登录功能形同虚设。
3、后台权限控制不严谨,只有在个别方法中通过检查session去判断是否登录。
4、model没有共用,不同模块直接复制model文件。
5、前端代码对图片长宽没有设置(如首页缩略图)
6、标题或内容过长时,缺少限制
7、后台明文密码
8、前后端对接问题


解决方案

1、略
2、绝对不应该用where name=’xx’ and pwd = ‘xx’,这是小白黑客最喜欢的了,注入十分简单。推荐用参数绑定、数组条件等。具体看tp文档的安全篇
3、在有中间件的框架,采用中间件控制权限。对于tp,应该写一个基类,所有需要判断权限的都继承于基类。
4、model可以共用的,不会共用只因不知道命名空间、自动加载。
5、略
6、略
7、至少加个盐,再md5一下
8、后端同学要学会基本的html、css、js,前端同学也要学会如何搭建php项目(可以用phpstudy等集成环境)。
前端不能把页面做好就丢给后端同学然后撤手不管。

如果项目是从新开发,且有前端和后台、UI合作,建议前端采用angular.js或者jquery及reactjs,在开始编码前,前端及后台研究一下前后端分离开发,设定好json的数据格式。学习前端工程化概念,让前端也可以组件化。

据观察,大部分人未能很好利用chrome的审核元素工具对ajax进行调试。

其它
技术人员在开发阶段应该多思考可能存在的问题:效率、安全、可维护性等,还有一些细节:不同分辨率的屏幕下可能出现的问题、有图片时和没图片时的变化等。
在开发阶段就应该多测试。

优化建议
1、商品列表增加缓存
2、代码封装
目录、导航等共同模块,除了view可以放在父模板,其它对应的controller操作也应该在装高层的父controller。这样不仅省代码,也方便做缓存。

代码规范
数组的key应该有单引号包含
$data['word'] = 'abc';

部署
关掉debug及页面trace

总结
1、项目人员最好这样分工:
1位有开发经验的后台同学(项目负责人)、1位有一定设计基础的UI、1位有定定设计基础的前端、1至2位新人边学习边参与
共3~5人。
项目负责人需要定下数据库结构、代码结构(如各个模块的划分)、界面结构(考虑UI设计好的界面的可行性)

2、代码提交前需要review(请使用git diff),提交时必须写注释。

3、管理员在项目开始前应该和技术人员商讨好开发周期和开发效果,时间可以以学期为单位,保持足够耐心和足够关怀,定时询问进展。

4、考虑到后期维护,项目组成员最好有年级阶梯,避免青黄不接。

参考资料
轮播图:
http://www.runoob.com/bootstrap/bootstrap-carousel-plugin.html
代码格式:
https://github.com/PizzaLiu/PHP-FIG/blob/master/PSR-2-coding-style-guide-cn.md
git协同开发:
https://github.com/livoras/blog/issues/7

作者:红满堂社区佛怒轮回

《新版二手市场开发总结》有2个想法

  1. 啥时候能改一下UI,我觉得现在的前端看起来很…..揪心。
    市场目录分类的方法不合理,UI我就不吐槽了,感觉比以前还差了点。
    查看商品那下面的一大片空白是咋回事,留着放照片?
    还有那大红的配色……
    汪的一声哭了出来。

发表评论