不要使用mysql_*系列函数,查询时尽量对sql语句进行预处理
PHP官方目前已经将此系列函数标记为弃用状态,添加PHP对mysql的支持,编译时使用下面的参数
--enable-mysqlnd --with-pdo-mysql --with-mysqli --with-mysql=mysqlnd
mysql_*系列函数不支持 预处理语句,事务,存储过程,异步查询,多条语句查询,
这也是强烈建议使用pdo_mysql或者mysqli的原因.
pdo是PHP的数据数据抽象层,为了扩展升级考虑,最好使用pdo_mysql
使用pdo_mysql扩展,查询前进行sql语句预处理,不仅能很有效的避免sql注入,同时一个查询如果被执行多次,那么只需要给预处理的sql语句重新绑定参数,大大提升查询的性能,降低资源(cpu)消耗
不要在纯PHP文件的最后结尾中使用闭合标签good style:
bad style:
在最后一行加上闭合标签,很可能会由于不小心,在闭合标签之后加入空白字符,比如换行,示例如下:
//here ,some of whitespace那么假设此文件包含在另外一个文件中,且在上述代码之后使用header函数输出,那么就会报错,这种错误很难被发现
只有当你在模板文件中才会需要闭合标签
如下了解一些web安全方面的知识,如sql注入,xss攻击,csrf攻击等等,永远不要相信用户的输入知道如何避免上述提到的安全问题
比如使用pdo_msyql预处理语句,防范sql注入
比如对用户输入进行过滤,防范xss攻击等等
始终记着对用户输入进行验证,即使客户端使用js对用户数据进行验证了,也不能取代服务器端的验证,客户端js验证是可以绕过的
具体请查看php手册安全部分内容对于用户输入的数据进行验证和过滤,不要忘记PHP内置的filter_*,尽可能的使用他们了解他们
http://cn2.php.net/manual/en/book.filter.php比如验证一个邮件地址是否合法
if(!filter_var($emailAddress, FILTER_VALIDATE_EMAIL)) { //Email is invalid. Show the user an error message. }不要编写重复代码,保持代码精简即针对同一功能或者业务的代码,尽可能只有一个实现,新手容易犯的错误就是喜欢copy,copy是大忌
字节码缓存,为PHP开启apc或者opcode扩展
比较好的做法就是快速完成需求和功能,然后进行重构,压缩减少代码量,重构的过程会让你的代码更加精简开启apc或者opcode对性能的提升很大,你需要做的,仅仅是编译安装一个额外的扩展
编码统一使用utf8
opcode在php-5.5集成到核心代码中,编译时 --enable-opcode 即可项目文件统一使用utf8编码
html页面meta部分
数据库表使用utf8编码,链接数据库设定编码
$db = new PDO("mysql:host=localhost;dbname=database;charset=utf8", "root", "");合理使用数据库字段类型,了解一些数据库设计范式合理使用字段类型,不仅能减少磁盘使用量,也能提升查询性能
其他一些建议不要使用正则去解析html,使用 Document Object Model
使用var_dump而不是echo,因为var_dump输出的信息更多,调式的时候很有用
使用缓存,reids,memcache等等
线上环境关闭错误信息提示###
post提交数据处理结束后,使用header重定向,避免用户刷新提交垃圾重复数据
不要在循环中执行sql语句(假设是必须的,那么也最好在循环外使用预处理语句)
对密码进行hash加密,PHP-5.5内置hash加密函数 password_hash,可查看手册
上传图片不要存储在数据库里,上传图片时裁剪图片节省存储空间
良好的注释文档,保持php代码风格的一致性(比如缩进一会儿使用tab,一会儿使用space就是特别差的习惯)
良好的代码code style,请参考 PHP-FIG 标准,PHP-FIG是php框架代码规范的非官方组织,有很多框架遵循此编码规范尽可能多的使用开源的解决方案,避免重复造轮子,在自己写代码完成一个功能前,先去搜索引擎或者技术网站查找是否已经有相关的解决方案,
避免吹毛求疵,比如到底是使用"还是"号的性能比较好,如果你使用了opcode扩展,两者之间是没有什么区别的,保持风格一致即可
使用版本控制工具维护你的代码,现在流行的是git
学习一些设计模式,比如单例模式,工厂模式,知道他们的应用场景,知道应用场景比知道他们写他们更重要
文中如有纰漏,错误之处,请指出
对于后续中列出的其他建议,如果有人觉得需要详细展开,请留言。
参考或者原文出处:PHP – Best Practises
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/20714.html
平日学习接触过的网站积累,以每月的形式发布。2017年以前看这个网址:http://www.kancloud.cn/jsfron... 1. Javascript 前端生成好看的二维码 十大经典排序算法(带动图演示) 为什么知乎前端圈普遍认为H5游戏和H5展示的JSer 个人整理和封装的YU.js库|中文详细注释|供新手学习使用 扩展JavaScript语法记录 - 掉坑初期工具 汉字拼音转换...
平日学习接触过的网站积累,以每月的形式发布。2017年以前看这个网址:http://www.kancloud.cn/jsfron... 1. Javascript 前端生成好看的二维码 十大经典排序算法(带动图演示) 为什么知乎前端圈普遍认为H5游戏和H5展示的JSer 个人整理和封装的YU.js库|中文详细注释|供新手学习使用 扩展JavaScript语法记录 - 掉坑初期工具 汉字拼音转换...
平日学习接触过的网站积累,以每月的形式发布。2017年以前看这个网址:http://www.kancloud.cn/jsfron... 1. Javascript 前端生成好看的二维码 十大经典排序算法(带动图演示) 为什么知乎前端圈普遍认为H5游戏和H5展示的JSer 个人整理和封装的YU.js库|中文详细注释|供新手学习使用 扩展JavaScript语法记录 - 掉坑初期工具 汉字拼音转换...
平日学习接触过的网站积累,以每月的形式发布。2017年以前看这个网址:http://www.kancloud.cn/jsfron... 1. Javascript 前端生成好看的二维码 十大经典排序算法(带动图演示) 为什么知乎前端圈普遍认为H5游戏和H5展示的JSer 个人整理和封装的YU.js库|中文详细注释|供新手学习使用 扩展JavaScript语法记录 - 掉坑初期工具 汉字拼音转换...
showImg(https://segmentfault.com/img/bV6aHV?w=1280&h=800); 社区优秀文章 Laravel 5.5+passport 放弃 dingo 开发 API 实战,让 API 开发更省心 - 自造车轮。 API 文档神器 Swagger 介绍及在 PHP 项目中使用 - API 文档撰写方案 推荐 Laravel API 项目必须使用的 8 个...
阅读 1981·2021-11-24 09:39
阅读 977·2021-11-11 16:55
阅读 1425·2021-10-09 09:43
阅读 1414·2021-10-08 10:17
阅读 1648·2021-08-25 09:41
阅读 418·2019-08-30 13:02
阅读 626·2019-08-29 15:14
阅读 1000·2019-08-29 13:53