手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

PHP进阶中必备几个编程技巧

时间:2024-11-17 00:39:43

1、使用一个SQL注射备忘单 1.一个基本的原则就是,永远不要相信用户提交的数据。另一个规则就是,在你发送或者存储数据时对它进行转义(escape)。可以总结为:filter input, escape output (FIEO). 输入过滤,输出转义。通常导致SQL注射漏洞的原因是没有对输入进行过滤,如图1语句。 2.在图1这个例子中,$_GET['name']来自用户提交的数据,既没有进行转义,也没有进行过滤。对于转义输出,你要记住用于你程序外部的数据需要被转义,否则,它可能被错误地解析。相反,过滤输入能确保数据在使用前是正确的。对于过滤输入,你要记住,在你程序外部的原始数据需要被过滤,因为它们是不可信任的。如图2例子演示了输入过滤和输出转义。 3.另一个有效防止SQL注射的方法是使用prepare 语句,如图3:

PHP进阶中必备几个编程技巧
PHP进阶中必备几个编程技巧
PHP进阶中必备几个编程技巧

2、了解比较运算符之间的不同 1.你使用strpos() 来检测在一个字符串中是否存在一个子串 (如果子串没有找到,函数将返回 FALSE ), 结果可能会导致错误,如图1. 2.图1中,由于子串处于最开始的位置,因此strpos() 函数正确地返回了0,表明子串处于字符串中最开始的位置。然后,因为条件语句会把结果当成Boolean(布尔)类型的,因此 0 就被PHP给计算成了 FALSE,最终导致条件语句判断失败。当然,这个BUG可以用严格的比较语句来修正,如图2。

PHP进阶中必备几个编程技巧
PHP进阶中必备几个编程技巧

3、尽量用str_replace() 而不是 ereg_replace() 和 preg_replace() 我们讨厌听到的否认的话,但是(原文)这个用于演示误用的小技巧导致了它试图避免的同样的滥用问题。(We hate to sound disparaging, but this tip demonstrates the sort of misunderstanding that leads to the same misuse it's trying to prevent.)很明显字符串函数比正则表达式函数在字符匹配方面更快速高效,但是作者糟糕地试图从失败中得出一个推论:(FIX ME: It's an obvious truth that string functions are faster at string matching than regular expression functions, but the author's attempt to draw a corollary from this fails miserably:)If you're using regular expressions, then ereg_replace() and preg_replace() will be much faster than str_replace().Because str_replace() does not support pattern matching, this statement makes no sense. The choice between string functions and regular expression functions comes down to which is fit for purpose, not which is faster. If you need to match a pattern, use a regular expression function. If you need to match a string, use a string function.

4、使用三重运算符三元运算符从代码的角度来说,一个减少代码量,二个减少了大妈行数,对于运行速度上来说是有提高的。

5、Memcached 磁盘访问是慢速的,网络访问也是慢的,数据库通常使用这二者。内存是很快的。使用本地缓存可以避免网络和磁盘访问的开销。结合这些道理,然后,你想到了memcached,一个“分布式内存对象缓存系统”,最初为基于Perl的博客平台LiveJournal开发的。如果你的程序不是分布在多个服务器上,你可能并不需要memcached。单的缓存方法——序列化数据然后将它保存在一个临时文件中。例如 – 对每个请求可以消除很多多余的工作。事实上,这是我们考虑帮助我们的客户优化他们的应用程序时,低挂水果的类型。什么是low-hanging fruit:A fruit-bearing tree often contains some branches low enough for animals and humans to reach without much effort. The fruit contained on these lower branches may be not be as ripe or attractive as the fruit on higher limbs, but it is usually more abundant and easier to harvest. From this we get the popular expression “low hanging fruit”, which generally means selecting the easiest targets with the least amount of effort.一种最简易且最通用的将数据缓存在内存的方式是使用APC中的共享类型辅助方法,APC是一个由George Schlossnagle开发的缓存系统,考虑如图例子。 使用这种类型的缓存,你不必在每一次请求时等待远程服务器发送Feed数据。一些延迟产生了 – 在这个例子中上限是五分钟,但可以根据您的应用程序需要调整到接近实时。

PHP进阶中必备几个编程技巧

6、使用框架多使用框架,能让我们开发速度快2到3倍,从安全性的角度上框架也是做得很好的。所以想要快速开发就选择一个好的框架如:Yii,CI,国内的Think等等。

7、正确的使用错误抑制操作符 总是试着避免使用错误抑制操作符号。  @ 操作符是相当的慢的并且如果你需要写高性能的代码的话它会使得开销很大。 错误抑制慢是因为在执行抑制语句前,PHP动态的改变error_reporting等级到0,然后然后立即将其还原。这是要开销的。更糟糕的是,使用错误抑制符使追踪问题的根本原因很困难。

© 手抄报圈