您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

一个PHP开发者总结的九条建议

2024/2/19 11:56:34发布18次查看
原文来自:https://jellybool.com/post/9-things-that-php-developer-should-know-abo...
本文只是个人从实际开发经验中总结的一些东西,并不是什么名言警句,写出来有两个目的:一是时刻提醒自己要按照这些知识点来写自己代码,二是为了分享,说不定对你有用呢?万一,是吧。。。
1.首要意识:安全 大多数时候,我们开发的web程序都是需要跟数据库打交道的,所以这里几乎可以说sql注入是一个怎么也无法避免要拿出来讨论一下的问题。而且近年来像xss和csrf攻击也变得大行其道,使得黑客们貌似又有了一把把利器,而我们总是处于被动的状态。不过我们要记得是下面这两个原则:
1. 永远不要相信用户输入的东西。(老话了,但这是真的)2. 将自己需要输出的数据进行转义。
简单来说就是:filter input , escape output
如果你是新手,不要再使用类似以下的查询语句了:
select from users where username = $_post['username'] and password = $_post['password'];
还有就是,使用pdo或mysqli吧,不要再使用老式的mysql操作了。
而对于,csrf的解决方案,目前接触的都是给每一次的表单提交都设置一个token值,然后在表单提交的时候校验之即可。
2.明确地知道各个比较操作符的差别 php的比较操作符,这其实可以说是一个很小的注意点,但是在某些时候真的很重要。比如说很多时候我们得考虑清楚,该用==还是===,如果你使用过strpos()这个函数,下面的代码可能会给你一个直观的感受:
上面这段代码的运行结果其实是输出chris is not an author,但是现实情况是,chris & sean真的是author啊,怎么回这样呢?其实是这样的:chris正好出现在chris & sean首位开始处,也就是0这个位置,所以substr()返回了,由于条件判断语句中bool判断,所以0作为了false处理,于是程序输出了chris is not an author,但是在这种情况之下我们该怎么处理呢?我们其实可以这样的:
0 ? $host : htmlentities($host);
7.使用缓存 目前php热门的缓存技术可能就是redis和memcached了,在php的官方文档中,也有memcached的使用教程,至于redis,我最近在研究中,后续会给出一些教程,如果一切顺利的话。
8.使用框架 框架的好处很多,可能是在性能方面有所损失外,貌似找不到不用框架的理由了,框架即可以加快你的开发速度,也可以让你在写代码的过程中撸的舒舒服服,而且想很多安全问题,你都会得到很好的解决。我这里首推laravel,不过像yii2 slim symfony都是非常棒的框架,除了symfony没有尝过过之外,剩下的三个我都有使用经历,最后就基本是用laravel了。不过我建议的laravel可能不适合你,这还是得看个人喜好。
9.用isset()代替strlen() 如果你需要在项目代码中需要根据一个字符串的长度来做条件判断,这个时候非常推荐你直接使用isset(),因为在同等条件之后,isset()的速度是strlen()的五倍左右,所以:
= 6) { // the username is at least six characters long.}
以上的两个条件判断都是可以达到相同的目的,但是我推荐使用的是第一种。
happy hacking
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product