韶华将逝,雄心未已;欲与众君,共习此技.
《PHP技术内幕》学习笔记(一)
上一篇 /
下一篇 2007-05-23 09:28:01 / 天气: 阴雨
/ 心情: 平静
/ 个人分类:PHP & MySQL
第一章
PHP概述
1.1 深入分析
freshmeat.net, sourceforge,net
1.1.1 编程基础
GML,Generalized Markup Language,通用标记语言
SGML,Standard Generalized Markup Language,标准通用标记语言
HTML,Hypertext Markup Language,超文本标记语言
XML,Extensible Markup Language,可扩展标记语言
1992年,Linus Torvalds—
Linux1994年,Rasmus Lerdorf—PHP/FT
GPL,GNU General Public License,GNU通用公告许可证
1.1.2 PHP的优点
使用
数据库但不保证每个字段都为正确数据类型的
代码。
例如MySQL,很多人利用phpMyAdmin构建MySQL中的表,但很少有人注意到phpMyAdmin的默认字段设置为非零(NOT NULL)。这些代码在web上发布后,可能会有人将其用于普通SQL构建的表,而该表在MySQL中字段的默认值为零(NULL)。如果落入此陷阱,则在运行时零数值将导致SQL输出页出现异常结果。
1.1.3 PHP4
许多PHP3中的代码加速技巧不适用于PHP4。例如,有人建议,在不需要对字符串执行双引号支持的替换类型时,可对其使用单引号,但在实际PHP4中比较单引号和双引号,发现前者的速度略慢于后者。在PHP4中统一使用双引号。(P6)
真正影响运行速度的是在大循环中使用多个嵌套函数。(P6)
COM,Component Object Model,组件
对象模型
PHP支持两种类型的正则表达式,即POSIX和可兼容的Perl。
1.1.4 PHP与
ApacheISP,
Internet Service Providers,Internet服务提供商
CGI,Common Gateway Interface,公共网关接口
Apache可以使PHP作为CGI或某个模块运行。
CGI的缺点之一是速度较慢,原因是Apache和PHP在脚本每次运行时均需重复初始化过程。(P8)
对于PHP为Apache模块的情况,PHP可在Apache启动时运行某些任务,这样提高了脚本执行该任务的速度。
基于效率的考虑,web服务器中PHP应作为模块运行。
1.1.5 PHP语法概述
<? php … ?>
也可以使用诸如<?的形式,但其与XML不兼容。
在行尾插入注释时使用符号(//)。
使用/*和*/则可插入注释块。
变量的创建方法是在名称前加入$。变量名区分大小写。
函数名不区分大小写。(P10)
PHP对数据类型的定义并不十分严格。PHP4添加了比较过程(= = =)以支持按类型的数值检查,但设计人员仍无法锁定数据的类型,因此在解释数据时必须非常小心。
PHP认为,除0之外的其他任何数值均为真,有些语言中负值表示假。在接受来自其他系统或非PHP软件所创建的文件中的数据时,需要检测负值以及负值在创建软件中表示的意义。
在任何语言中,最保险的编程策略是严格控制不正确数据的进入。
1.2 快速解决方案
1.2.1 Apache配置
1.2.2 特殊的Apache函数
1.2.3 PHP配置
1.2.4 诊断
assert()函数相当于if(eval()),用于判断结果是否为假。
不要使用assert()。
die()函数用于终止脚本的运行,它给出的消息可作为脚本最后的输出。
die()也可以通过函数清除文件。
1.2.5 错误
php:ini中PHP默认为:error_reporting=E_ALL & ~ E_ALL,可将其改为以下设置:error_reporting=E_ALL。
上述设置的不同之处在于,默认形式支持使用丢失变量而不显示警告信息;修改后的设置在上述过程中将给出警告信息。这样后者有助于避免因输入错误而使用丢失数据。
1.2.6 记录
error_log (“this is a message” , 0);
其中的0表示消息将出现在error_log所设定的位置。也可以采用将0转换为1并添加附加头的方法通过电子邮件发送消息。
1.2.7 输出控制
ob_start();ob_end_flush();on_end_clean();ob_get_contents();
1.2.8 安全性
PHP的安全问题主要出现在使用eval()处理访问者出入信息的过程。
1.2.9 正则表达式
正则表达式用于在字符串中搜索指定字符串进行替换。
ereg(),ereg_replace(),eregi(),eregi_replace(),split(),splitic()
导入论坛
收藏
分享给好友
管理
举报
TAG:
PHP技术内幕
学习笔记