PHP下10件你也许并不了解的事情


Posted in PHP onSeptember 11, 2008

另一方面,有时候可以用一行简单的代码就能解决一个难题。
下面是一些很酷的特性,很可能你也没有注意到:
使用 ip2long() 和 long2ip() 函数来把 IP 地址转化成整型存储到数据库里。这种方法把存储空间降到了接近四分之一(char(15) 的 15 个字节对整形的 4 个字节),计算一个特定的地址是不是在一个区段内页更简单了,而且加快了搜索和排序的速度(虽然有时仅仅是快了一点)。

在验证 email 地址的时候使用 checkdnsrr() 函数验证域名是否存在。这个内置函数能够确认指定的域名能够解析成 IP 地址。该函数的PHP 文档的用户评论部分有一个简单的用户自定义函数,这个函数基于 checkdnsrr(),用来验证 email 地址的合法性。对于那些认为自己的 email 地址是 “joeuser@wwwphp.net” 而不是 “joeuser@php.net” 的家伙们,这个方法可以很方便的抓住他们。

如果你使用的是 PHP 5 和 MySQL 4.1 或者更高的版本,考虑抛弃 mysql_* 系列函数改用改进版的 mysqli_* 系列函数。一个很好的功能就是你可以使用预处理语句,如果你在维护一个数据库密集型站点,这个功能能够加快查询速度。一些评估分数。

学会爱上三元运算符。

如果你在项目中感觉到有可复用的部分,在你写下一行代码前先看看 PEAR 中是否已经有了。很多 PHP 程序员都知道 PEAR 是一个很好的资源库,虽然还有很多程序员不知道。这个在线资源库包含了超过 400 个可以复用的程序片段,这些程序片段你可以立即用刀你的程序里。除非说你的项目真的是非常特别的,你总能找到帮你节省时间的 PEAR 包。(参见 PECL)

用 highlight_file() 来自动的打印出格式化的很漂亮的源代码。如果你在留言板、IRC 这些地方寻求一个脚本的帮助的话,这个函数用起来非常的顺手。当然了,要小心不要意外的泄露出你的数据库连接信息和密码等。

使用 error_reporting(0) 函数来防止用户看到潜在的敏感错误信息。在理想情况下,发布服务器应该在 php.ini 里完全禁止。但是如果你用的是一个共享的 web 服务器的话,你没有自己的 php.ini 文件,那么这种情况下你最好的选择就是在所有脚本的第一行前加上 error_reporting(0);(或者使用 require_once() 方法)。这就能够在出错的时候完全屏蔽敏感的 SQL 查询语句和路径名。

在网数据库中存储很大的字符串之前使用 gzcompress() 和 gzuncompress() 来显式的压缩/解压字符串。这个 PHP 内置函数使用 gzip 算法,可以压缩普通文本达 90%。在我每次要读写 BLOB 类型的字段的时候都使用这些函数。唯一额例外就是当我需要全文检索的时候。

通过“引用”传递参数的方法从一个函数中得到多个返回值。就像三元运算符一样,大部分受过正式编程训练的程序员都知道这个技巧。但是那些 HTML 背景大于 Pascal 背景的程序员都或多或少的有过这样的疑问“在仅能使用一次 return 的情况下,从一个函数里返回多个值?”答案就是在变量前加上一个 “&” 符号,通过“引用”传递而非“值”传递。

完全理解“魔术引号”和 SQL 注入的危险性。我希望阅读到这里的开发者都已经很对 SQL 注入和了解了。不过我还是把这条列在这里,是因为这个确实有点难以理解。如果你还没有听说过这种说法,那么把今天剩下的时间都用来 Google、阅读吧。

PHP 相关文章推荐
echo(),print(),print_r()之间的区别?
Nov 19 PHP
Zend framework处理一个http请求的流程分析
Feb 08 PHP
PHP mb_convert_encoding文字编码的转换函数介绍
Nov 10 PHP
CI框架学习笔记(一) - 环境安装、基本术语和框架流程
Oct 26 PHP
PHP函数extension_loaded()用法实例
Jan 19 PHP
php格式化金额函数分享
Feb 02 PHP
php简单获取文件扩展名的方法
Mar 24 PHP
Symfony2在Nginx下的配置方法图文教程
Feb 04 PHP
PHP使用finfo_file()函数检测上传图片类型的实现方法
Apr 18 PHP
php文件上传及下载附带显示文件及目录功能
Apr 27 PHP
PHP PDO和消息队列的个人理解与应用实例分析
Nov 25 PHP
PHP7 新增功能
Mar 09 PHP
PHPMailer邮件类利用smtp.163.com发送邮件方法
Sep 11 #PHP
fleaphp下不确定的多条件查询的巧妙解决方法
Sep 11 #PHP
Zend Guard一些常见问题解答
Sep 11 #PHP
php目录管理函数小结
Sep 10 #PHP
php获取某个目录大小的代码
Sep 10 #PHP
php递归列出所有文件和目录的代码
Sep 10 #PHP
在服务端进行目录建立、删除,文件上传、删除的过程的php代码
Sep 10 #PHP
You might like
PHP原生模板引擎 最简单的模板引擎
2012/04/25 PHP
利用PHP生成静态HTML文档的原理
2012/10/29 PHP
对淘宝URL中ID提取的PHP代码
2013/09/01 PHP
8个PHP程序员常用的功能汇总
2014/12/18 PHP
Yii2.0中的COOKIE和SESSION用法
2016/08/12 PHP
初识javascript 文档碎片
2010/07/13 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
2015/03/24 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
2015/11/17 Javascript
AngularJS入门心得之directive和controller通信过程
2016/01/25 Javascript
使用jquery获取url及url参数的简单实例
2016/06/14 Javascript
jQuery时间验证和转换为标准格式的时间格式
2017/03/06 Javascript
JavaScript实现打地鼠小游戏
2020/04/23 Javascript
vue.js数据绑定的方法(单向、双向和一次性绑定)
2017/07/13 Javascript
简单谈谈关于Angular Cli打包的事
2017/09/05 Javascript
详解Vue快速零配置的打包工具——parcel
2018/01/16 Javascript
详解vuex中action何时完成以及如何正确调用dispatch的思考
2019/01/21 Javascript
JS绘图Flot如何实现动态可刷新曲线图
2020/10/16 Javascript
Vue使用CDN引用项目组件,减少项目体积的步骤
2020/10/30 Javascript
工作中常用js功能汇总
2020/11/07 Javascript
python处理圆角图片、圆形图片的例子
2014/04/25 Python
Python使用sftp实现上传和下载功能(实例代码)
2017/03/14 Python
浅谈使用Python变量时要避免的3个错误
2017/10/30 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
2018/06/05 Python
在PyCharm导航区中打开多个Project的关闭方法
2019/01/17 Python
python生成器用法实例详解
2019/11/22 Python
Python Tornado之跨域请求与Options请求方式
2020/03/28 Python
浅谈Python __init__.py的作用
2020/10/28 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
2020/12/22 Python
Spartoo瑞典:鞋子、包包和衣服
2018/09/15 全球购物
英国美术用品购物网站:Cass Art
2019/10/08 全球购物
企业承诺书怎么写
2014/05/24 职场文书
地下停车场租赁协议范本
2014/10/07 职场文书
贫民窟的百万富翁观后感
2015/06/09 职场文书
采购部2015年度工作总结
2015/07/24 职场文书
幼儿园中班班级总结
2015/08/10 职场文书
k8s部署redis cluster集群的实现
2021/06/24 Redis