新版二手市场开发总结

新版二手市场,前前后后有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

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

【红满堂技术组】新人学习任务v1.0

前言:
新人学习任务考察的是快速学习能力,按照先后顺序完成。时间最多为一个学期,适用人群为新加入红满堂的技术组成员。

后台开发

  1. 学习html、css、javascript,了解html5、css3规范。完成一篇以上的学习报告 (1周)
  2. 学习jquery,并运用html、css等知识写一个轮播图界面 (1周)
  3. 学会使用git版本管理工具,将上面的学习报告、轮播图代码都提交到git仓库。(请使用hgit.scau.edu.cn)(1周)
  4. 学习php,阅读一遍php官方文档(php.net)。完成一篇以上的学习报告。利用php及html等知识写一个表单提交页面,提交到git仓库。(2周)
  5. 学习使用mysql数据库,用sql语句对数据库进行简单操作。(2周)
  6. 学习一个php框架,建议用laravel或者thinkphp。结合mysql完成登录、注册功能。代码提交到git仓库。(3周)
  7. 了解web安全知识,完成一篇学习报告。(可以了解sql注入、服务器安装、xss、csrf等知识)(1周)
  8. 安装linux虚拟机,学习linux的基本操作。(3周)

学习资料:
慕课网: http://www.imooc.com/course/list?c=html
w3cschool: http://www.w3school.com.cn/
 

前端开发

  1. 学习html、css、javascript,了解html5、css3规范。完成一篇以上的学习报告(1周)
  2. 学习jquery,并运用html、css等知识写一个轮播图界面 (1周)
  3. 学会使用git版本管理工具,将上面的学习报告、轮播图代码都提交到git仓库。(请使用hgit.scau.edu.cn)(1周)
  4. 根据设计图完成一个页面重构 (3周)
  5. 学习angular,使用它的http请求一段json,将数据绑定到dom显示。(3周)

学习资料:
慕课网: http://www.imooc.com/course/list?c=html
w3cschool: http://www.w3school.com.cn/

app开发

待补充