《PHP开发手册(典藏版)》是2011年出版的图书,作者是孙鹏程等。
基本介绍
- 书名PHP开发手册(典藏版)
- 作者孙鹏程 等编着
- ISBN978-7-121-12293-4
- 页数740页
- 定价99.00元(含光碟1张)
- 出版时间2011年3月
- 开本16开
宣传语
百科全书式的PHP编程宝典,值得每个程式设计师珍藏
囊括PHP从基础知识到高级开发技术的全景式解读
内 容 提 要
本书全面、系统地介绍了PHP实战开发方方面面的技术。内容由浅入深,从易到难,实例丰富,从PHP的基本知识到高级技术与框架操作,再到项目开发与扩展套用,几乎涉及PHP开发与套用的所有重要知识。书中的全部实例原始码都收录在本书的配书光碟中,供读者实战演练。
本书共分5篇。第1篇介绍PHP的档案系统、程式调试、异常处理、表单与JavaScript等基础套用;第2篇介绍PHP与MySQL、PostgreSQL、SQL Server以及Oracle等多种不同资料库的互动操作方法;第3篇介绍PHP的扩展库PEAR、ADOdb、FPDF、GD库的操作方法,以及目前流行的ThinkPHP、Zend Framework、CakePHP、Symfony等PHP开发框架;第4篇通过对CMS系统、OA系统、流程管理系统、资源管理系统等系统的介绍,详细讲解PHP在实际开发中的套用;第5篇介绍PHP的网路客户端、Web Service扩展套用,以及Ajax的基础知识。
本书光碟中的电子书分三篇第1篇介绍PHP开发环境的搭建、PHP的基本语法与操作;第2篇介绍PHP的面向对象操作及类的开发实例;第3篇介绍PHP伺服器环境的硬体知识与伺服器维护策略。
本书无论是对初学PHP应用程式的开发人员,还是对PHP应用程式开发有一定经验的开发人员,都会有很大的帮助。对于经常使用PHP的程式设计师,本书也是一本不可多得的案头必备参考书。
前 言
从1995年Rasmus Lerdorf发明PHP程式语言1.0版本以来,已经有15年了。在这期间,PHP以其高效、开源以及易学易懂的特点,在动态网页开发领域经久不衰。特别是在2004年PHP 5发布以后,PHP受到了更多网站系统开发人员与编程爱好者的青睐,成为目前流行的Web应用程式开发平台之一。PHP 5的发布使PHP不再局限于个人小型网站的使用。PHP 5增强的企业特性使PHP更广泛地套用于大型网站与系统的建设。PHP 5在开发效率、灵活性、安全性、性能方面比PHP 4又有进一步加强。除此之外,PHP 5面向对象的特点使PHP的功能有了更远的发展。
笔者结合自己多年的PHP开发经验和心得体会,并结合最新的技术发展写作了本书。希望各位读者能在本书的引领下跨入PHP开发大门,并进而成为一名开发高手。本书有“全”和“新”两个优势;全面地讲解了PHP中的各种特性以及操作,内容几乎涉及使用PHP开发网站的所有方面;并且对于新兴的PHP框架、Web 2.0技术、Ajax技术等都进行了系统翔实的介绍。
本书特色
1.实例丰富,贯穿有大量的开发实例和技巧,学习效果好。
本书的所有知识点都附带了可以运行的PHP代码,而且包含了详细的注释。在代码的基础上学习,可以为今后的套用打下坚实的基础。
2.内容全面系统。
本书对PHP的各方面知识作了一个全面的介绍,包括如何配置安装环境、基本语法以及与资料库的连线操作等。
3.讲解循序渐进,适合各个层次的读者阅读。
本书对PHP与其他网页元素诸如表单、档案、图像作了一个很详细的介绍。,对PHP与LDAP的操作、PEAR、Web 2.0以及一些处于发展中或刚刚出现的PHP Framework作了一个简要介绍。
4.详解典型项目案例开发,迅速提升开发水平。
本书使用了几个完整的实例,综合介绍了PHP在实际套用中的使用方法。这些极具代表性的实例对读者的实际套用、毕业设计等都具有指导作用。
5.配有代码光碟,节省代码输入时间。
配书光碟提供了书中的所有代码。读者可以在学习中直接对书中的例子进行运行,有效地节省代码输入的时间。
本书内容及体系结构
第1篇 PHP基础套用(第1~7章)
本篇主要内容包括档案系统与文本操作、字元与数组的处理、PHP的调试与异常处理、PHP表单以及JavaScript等。通过本篇的学习,读者可以掌握PHP的常用技巧、PHP程式的调试方法,以及与表单等基本Web元素的套用方法。
第2篇 PHP与资料库(第8~17章)
本篇主要内容包括关係型资料库的基础知识,MySQL、PostgreSQL、SQL Server与Oracle资料库与PHP的互动操作方法。通过本篇的学习,读者可以掌握PHP与不同资料库的基本操作方法,并对触发器和存储过程的编写方法有一定了解。
第3篇 PHP的高级套用(第18~32章)
本篇主要内容包括PEAR、ADOdb、FPDF、Smarty等多种常见类库的套用,PHP与图像、邮件系统、LDAP系统等常见对象的操作,以及目前流行的ThinkPHP、Zend Framework、CakePHP、Symfony等框架的实施方法。通过本篇的学习,读者可以掌握PHP中的常用类库与对象的操作,并对目前流行的各种PHP编程框架有一定了解。
第4篇 PHP与实际项目(第33~39章)
本篇主要内容包括CMS系统、OA系统、流程管理系统、资源管理系统等项目案例开发实例,并对搜寻引擎技术、入口网站的套用技巧、多国语言处理策略方面进行了重点介绍。通过本篇的学习,读者可以全面套用前面章节所学的开发技术进行软体项目开发,达到可以独立开发项目的水平。
第5篇 PHP的扩展套用(第40~44章)
本篇主要内容包括PHP的网路客户端、Web Service、Ajax以及使用Visual C++进行PHP扩展的开发等。通过本篇的学习,读者可以看到PHP不仅可以实现普通的Web套用系统开发,还可以实现包括命令行程式、网路服务程式等其他套用的开发。
光碟电子书内容体系结构
第1篇 PHP的基础知识(第1~4章)
本篇主要内容包括PHP开发环境搭建、PHP的基础语法、数据类型以及函式处理与数据引用等。通过本篇的学习,读者可以掌握PHP开发环境的搭建方法以及PHP的编程基础知识,为后续的应用程式开发奠定坚实的基础。
第2篇 PHP面向对象(第5~8章)
本篇主要内容包括PHP面向对象套用的基础知识、类的基本操作、高级操作以及考试评分模组的案例开发。通过本篇的学习,读者可以掌握PHP中有关面向对象的核心技术和编程思想。
第3篇 支持Web的系统和网路维护(第9~13章)
本篇主要内容包括硬体故障的解决、防火墙套用、数据的安全性、日誌分析方法等。通过本篇的学习,读者可以掌握一些有关伺服器的基础知识。这些知识对于项目的实际部署非常有用,可以指导读者在系统运营期间需要注意的问题。
本书读者对象
PHP初学者。
PHP网页专业设计製作人员。
PHP网站维护人员。
PHP网页製作爱好者。
大学/大专/中专在校学生。
社会培训班学员。
需要一本案头必备手册的程式设计师。
本书作者
本书主要由孙鹏程编着,其他参与编写的人有昊燃、黄叶新、李增辉、刘聪、龙志标、孟劼、米爱中、秦侠、冉剑、任潇、谭励、王大亮、伍云辉、于重重。在此表示感谢!
编者
目 录
第1篇 PHP基础套用
第1章 档案系统与文本数据操作 2
在程式设计中,档案是一个很重要的对象,Web编程也不例外。档案的操作在很多Web系统中一直都是被反覆用到的。在实际套用中经常会遇到对档案和目录的创建、修改、删除等操作。本章将主要介绍如何使用PHP对档案系统以及文本数据进行操作。
1.1 PHP中目录操作详解 2
1.1.1 打开目录 2
1.1.2 关闭目录 3
1.1.3 读取目录中的档案 3
1.1.4 创建目录 3
1.1.5 删除目录 4
1.2 PHP中档案操作详解 4
1.2.1 打开档案 4
1.2.2 关闭档案 5
1.2.3 读取档案 5
1.2.4 写入档案 6
1.2.5 删除档案 6
1.2.6 複製档案 7
1.3 本地档案的操作实例——小型留言本 7
1.3.1 留言发表模组 7
1.3.2 浏览模组 9
1.4 远程档案的操作实例 10
1.5 档案的上传与下载 10
1.5.1 档案的上传 10
1.5.2 档案的下载 11
1.6 小结 12
第2章 字元的处理与正则表达式 13
在PHP中,对于字元的处理是一个很重要的部分,很多套用中都包含有字元处理的功能,而正则表达式则是有效地处理一些複杂字元操作的便利方式。本章将重点介绍PHP中的一些常见字元处理操作及正则表达式的套用。
2.1 字元类型的特殊性 13
2.2 字元的显示与格式化 14
2.2.1 字元的显示 14
2.2.2 字元的格式化 14
2.3 常见的操作 15
2.3.1 字元串重複操作——str_repeat 15
2.3.2 字元串替换操作——str_replace和str_ireplace 16
2.3.3 字元串分解操作——str_split 17
2.3.4 字元串单词数的计算函式——str_word_count 18
2.3.5 字元串查找操作——strstr 19
2.3.6 获得字元串长度——strlen 19
2.3.7 获得字元串子串——substr 19
2.4 正则表达式简介 20
2.5 正则表达式与字元操作综合套用 20
2.5.1 获得与模式匹配的数组单元——preg_grep 21
2.5.2 进行全局正则表达式匹配——preg_match_all 21
2.5.3 进行正则表达式匹配——preg_match 23
2.5.4 转义正则表达式字元——preg_quote 24
2.5.5 执行正则表达式的搜寻和替换的函式——preg_replace 25
2.5.6 通过回调函式执行正则表达式的搜寻和替换——preg_replace_callback 25
2.5.7 用正则表达式进行字元串分割——preg_split 26
2.6 字元操作的注意事项 27
2.7 小结 29
第3章 数组操作与数据结构算法 30
数组是一个由若干同类型变数组成的集合,引用这些变数时可用同一名字。数组中的每一个变数都叫做数组的一个元素。在开发中,数组有广泛的用途。本章将对数组及一些数组的使用技巧作详细讲解。
3.1 一维数组与多维数组 30
3.1.1 一维数组简介 30
3.1.2 多维数组简介 30
3.2 常用的数组操作 31
3.2.1 数组的创建与调用 31
3.2.2 数组的更新 32
3.2.3 数组元素的遍历 33
3.3 数组索引与键值的操作技巧 34
3.4 数组的排序 36
3.4.1 递增排序——sort 36
3.4.2 递减排序——rsort 36
3.4.3 数组排序——array_multisort 37
3.5 几种数组的套用实例 38
3.5.1 顺序查找 38
3.5.2 二分法查找 39
3.5.3 使用array_search函式进行查找 39
3.5.4 线性表的入栈与出栈 40
3.5.5 数组的合併 42
3.5.6 数组的拆分 43
3.5.7 随机排序 44
3.6 小结 45
第4章 PHP程式调试 46
在PHP的编写过程中,错误是不可避免的,如何有效地调试并修复错误是一个程式设计师必备的一种能力。PHP提供了很好的错误提示,并且通过与Eclipse工具结合可以很方便地进行程式调试。本章将对PHP中的错误类型和程式调试方法进行详细讲解。
4.1 PHP中的错误类型 46
4.1.1 语法错误 46
4.1.2 语义错误 47
4.1.3 逻辑错误 47
4.1.4 注释错误 47
4.1.5 运行时错误 48
4.2 PHP程式调试策略 48
4.2.1 PHP的错误级别 48
4.2.2 打开PHP的错误报告 49
4.2.3 使用print进行程式调试 50
4.3 使用PHPEclipse进行PHP程式调试 51
4.3.1 使用Eclipse编写PHP程式的好处 51
4.3.2 PHPEclipse的安装与启动 51
4.3.3 PHPEclipse的使用 52
4.3.4 PHPEclipse的语法错误强调功能 53
4.3.5 PHPEclipse的调试界面 54
4.3.6 使用PHPEclipse调试PHP代码的常见问题 57
4.4 错误的处理 58
4.4.1 错误的隐藏 58
4.4.2 错误信息的定製 59
4.4.3 逾时错误的处理 60
4.5 小结 61
第5章 PHP中的异常处理 62
上一章介绍了如何调试PHP中的错误,这些错误通常是在实际编程中因为程式设计师的失误或者设计错误造成的。在实际运行过程中,往往还可能存在一些环境错误。例如,档案无法找到或者资料库无法打开等。这些环境错误可以通过if语句的判断来识别。,PHP还提供了一种更好的异常处理方法,可以有效地解决因为环境错误带来的异常。本章将主要介绍PHP中的异常处理方法。
5.1 异常处理的原理 62
5.2 PHP中的异常处理 62
5.2.1 异常类Exception 63
5.2.2 异常抛出关键字throw 64
5.2.3 异常捕获语句try-catch 65
5.2.4 异常处理函式设定set_exception_handler 66
5.2.5 完整的异常信息 67
5.3 扩展的异常处理类 68
5.4 异常的传递与重掷 71
5.5 小结 73
第6章 PHP与表单 74
在Web应用程式的开发中,通常使用表单来实现程式与用户输入的互动。用户通过在表单上输入数据,将一些信息传输给网站的程式以进行相应的处理。当用户在Web页面中的表单内填写好信息以后,可以通过单击按钮或连结来实现数据的提交。本章将主要介绍PHP中表单的套用,PHP程式通过接收用户在表单中输入的信息实现与用户的互动。
6.1 HTML表单简介 74
6.1.1 表单标籤form 74
6.1.2 输入标籤input与文本框 75
6.1.3 按钮 76
6.1.4 单选框与複选框 77
6.1.5 多行文本域标籤textarea 78
6.1.6 下拉框与列表框标籤select 79
6.2 表单数据的接收 79
6.2.1 GET方法 80
6.2.2 POST方法 82
6.3 常用表单数据的验证方法 83
6.3.1 姓名验证 83
6.3.2 日期验证 84
6.3.3 E-mail地址验证 84
6.3.4 密码栏位的验证 84
6.3.5 改进的用户信息输入程式 85
6.4 URL编码解码函式 87
6.4.1 编码字元串——urlencode 87
6.4.2 解码字元串——urldecode 87
6.5 小结 88
第7章 PHP与JavaScript互动 89
前面几章介绍了如何使用PHP语言来实现一些基本操作。PHP是一种后台语言,在执行时会将PHP程式的运行结果以静态HTML的形式返回给客户端。也就是说,在客户端并不能看见PHP代码。本章将要介绍一种流行的在客户端执行的前台程式语言——JavaScript。在实际套用中,往往会结合套用后台语言和前台语言以实现一些需要的功能。
7.1 JavaScript简介 89
7.2 JavaScript的数据类型 89
7.3 JavaScript程式设计基础 90
7.3.1 在HTML中嵌入JavaScript 90
7.3.2 变数 91
7.3.3 注释 91
7.3.4 函式的定义与调用 92
7.3.5 条件语句 92
7.3.6 循环语句 95
7.3.7 对象 97
7.3.8 事件 98
7.4 PHP动态生成JavaScript代码 99
7.4.1 多行输出 99
7.4.2 单行输出 99
7.4.3 PHP动态生成JavaScript实例——进度条 100
7.5 JavaScript中调用PHP程式 101
7.5.1 页面的跳转 101
7.5.2 隐性调用PHP程式 102
7.6 JavaScript和PHP综合实例——表单验证 102
7.6.1 表单设计 103
7.6.2 JavaScript代码设计 104
7.6.3 PHP代码设计 105
7.6.4 代码的运行 106
7.7 小结 107
第2篇 PHP与资料库
第8章 关係型资料库的基础知识 110
在第一篇中,介绍了PHP的各种基本套用。从本章开始,将介绍PHP与资料库的结合使用。本章将主要介绍一些关係型资料库的基础知识。
8.1 关係型资料库与关係型资料库系统的介绍 110
8.2 关係型资料库系统的结构与运行过程 111
8.2.1 关係型资料库系统的层次结构 111
8.2.2 关係型资料库系统的运行过程 111
8.3 常用关係型资料库的介绍 112
8.3.1 MySQL 112
8.3.2 ORACLE 112
8.3.3 SYBASE 113
8.3.4 DB2 113
8.3.5 SQL Server 113
8.4 SQL语言简介 113
8.5 常见资料库设计问题 114
8.6 关係型资料库的设计原则 114
8.6.1 第一範式(1NF) 115
8.6.2 第二範式(2NF) 115
8.6.3 第三範式(3NF) 116
8.7 资料库设计的方法与步骤 116
8.7.1 需求分析 117
8.7.2 概念设计的E-R方法 121
8.7.3 资料库逻辑设计方法 121
8.7.4 物理设计阶段 124
8.7.5 资料库实施阶段 124
8.7.6 资料库运行和维护阶段 124
8.8 小结 124
第9章 MySQL的安装与操作 125
上一章对资料库管理系统的基本特点作了一些简要介绍,并且介绍了常见的几款关係型资料库系统,MySQL就是其中之一。在与PHP的套用中,MySQL是最常用到的一款。本章将主要介绍如何安装和配置MySQL资料库伺服器,并对MySQL资料库伺服器的一些常见操作加以介绍。
9.1 MySQL资料库伺服器介绍 125
9.2 安装与配置 125
9.2.1 下载MySQL 125
9.2.2 MySQL的安装 126
9.2.3 MySQL的配置 127
9.2.4 MySQL的启动与关闭 129
9.3 资料库与表的创建 129
9.3.1 登录与退出MySQL命令行管理模式 130
9.3.2 MySQL的资料库操作 130
9.3.3 表的创建 132
9.4 数据类型的介绍 134
9.5 索引与唯一值的介绍 135
9.6 数据的操作 136
9.6.1 表的修改 136
9.6.2 表的删除 137
9.6.3 数据的查询 137
9.6.4 数据的插入 142
9.6.5 数据的更新 143
9.6.6 数据的删除 144
9.7 小结 144
第10章 MySQL与PHP的套用 145
上一章介绍了如何通过MySQL命令行对MySQL资料库进行操作。在PHP中,使用MySQL扩展来实现对MySQL资料库的操作。其基本操作方法与在命令行上进行操作大致相同,只是操作命令都是写到PHP脚本中来完成的。本章将介绍如何使用PHP对资料库操作,并具体介绍PHP与MySQL的结合使用。
10.1 PHP结合资料库套用的优势 145
10.2 Web资料库的工作原理 145
10.3 使用PHP操作MySQL资料库 146
10.3.1 资料库伺服器的连线与断开 146
10.3.2 选择资料库 147
10.3.3 执行SQL语句 147
10.3.4 获得查询结果集中的记录数 149
10.3.5 获得结果集中的某一条记录 149
10.3.6 逐行获取结果集中的每一条记录 150
10.3.7 结果集的分页 152
10.3.8 用户动态添加记录 153
10.3.9 用户动态更新记录 155
10.3.10 用户动态删除记录 157
10.4 使用PHP获取MySQL资料库的信息 158
10.4.1 获取资料库的信息 159
10.4.2 获取表的信息 159
10.4.3 获取列的数目 160
10.4.4 获取列的名称 160
10.4.5 获取列的数据类型 160
10.4.6 获取列的长度 161
10.4.7 获取列的标誌 161
10.4.8 一个完整的查看錶中各列属性的实例 162
10.5 常见问题与解决方案 162
10.6 小结 164
第11章 资料库中的程式逻辑 165
上一章介绍了使用PHP对MySQL资料库进行存取,在一般性的套用中,使用PHP直接对资料库进行存取的方法套用非常广泛。有时候,一些基本的资料库套用可能会被反覆用到。如果使用PHP反覆执行这一相同操作,不仅麻烦而且会影响代码的运行效率。
,在某些时候,对于一些小型并且频繁使用的资料库操作,可以将其交给资料库来完成。本章将以MySQL资料库为例,介绍如何在资料库中实现这些程式逻辑。
11.1 资料库程式逻辑与PHP程式逻辑的分体设计原则 165
11.2 资料库程式逻辑与数据的关係 165
11.3 存储过程的设计 166
11.3.1 定界符重定义 166
11.3.2 存储过程的创建与调用 167
11.3.3 存储过程的参数 168
11.3.4 複合语句 170
11.3.5 变数 170
11.3.6 条件语句 172
11.3.7 循环语句 173
11.3.8 游标 175
11.3.9 存储过程的删除 177
11.4 触发器的设计 177
11.4.1 触发器的创建与触发 177
11.4.2 触发器的删除 178
11.5 PHP与存储过程、触发器 178
11.5.1 PHP调用存储过程 178
11.5.2 PHP调用触发器 179
11.6 小结 180
第12章 Session与Cookie 181
在资料库套用中,难免会涉及用户登录功能的编写。在一些系统中,往往也需要识别用户的身份。,Session与Cookie是Web套用特别是资料库套用中不可或缺的两个要素。正是由于Session和Cookie的存在才使页面间信息的安全传递成为可能。本章将结合资料库的使用实例来介绍PHP中Session和Cookie的套用。
12.1 Session与Cookie简介 181
12.2 PHP中Session的实现 181
12.2.1 标识开始使用Session 182
12.2.2 Session预定义数组 182
12.2.3 Session的检测与注销 182
12.2.4 PHP中Session处理的定製 183
12.3 Session套用实例——登录验证 187
12.3.1 资料库设计 187
12.3.2 HTML表单的设计 187
12.3.3 验证页面的编写 188
12.3.4 欢迎页面的编写 189
12.3.5 注销页面的编写 189
12.3.6 代码的运行 189
12.3.7 代码的改进 190
12.4 PHP中Cookie的实现 191
12.4.1 Cookie语法格式 191
12.4.2 Cookie预定义数组 191
12.4.3 创建一个Cookie 191
12.4.4 创建一个有时间限制的Cookie 192
12.4.5 创建一个有範围限制的Cookie 192
12.4.6 删除Cookie 193
12.4.7 浏览器重定向 193
12.4.8 Cookie的常见问题 193
12.5 Cookie套用实例——登录验证 194
12.5.1 HTML表单的设计 194
12.5.2 验证页面的编写 194
12.5.3 欢迎页面的编写 195
12.5.4 注销页面的编写 196
12.5.5 代码的运行 196
12.6 Cookie与Session的比较 197
12.7 小结 197
第13章 MySQL与PHP的套用实例——留言本 198
在前面几章中,介绍了MySQL与PHP结合使用的方法,以及如何在PHP中使用Session和Cookie。本章将从一个PHP留言本的整体设计入手,详细介绍在实际套用中如何使用PHP结合MySQL开发基于Web的应用程式。
13.1 留言本实例的系统分析 198
13.1.1 系统简介 198
13.1.2 系统模型设计 198
13.1.3 资料库设计 199
13.1.4 公共功能设计 200
13.2 使用MySQL与PHP创建一个留言本 200
13.2.1 查看留言功能 201
13.2.2 发表留言功能 203
13.2.3 管理员身份验证功能 205
13.2.4 管理首页设计 206
13.2.5 留言回复功能 208
13.2.6 留言删除功能 209
13.2.7 留言回复删除功能 210
13.2.8 留言审批功能 210
13.2.9 退出管理员登录功能 211
13.3 小结 211
第14章 PostgreSQL与PHP的套用 212
前面几章对MySQL资料库系统与PHP的套用作了一些详细介绍。本章将向读者介绍一种常与PHP结合使用的资料库系统PostgreSQL。通过学习本章,读者将不仅掌握一些PostgreSQL的常用操作方法,也将对如何使用PHP操作PostgreSQL有一个初步的了解。
14.1 PostgreSQL简介 212
14.2 PostgreSQL的安装 212
14.2.1 PostgreSQL的下载 212
14.2.2 PostgreSQL的安装步骤 213
14.2.3 PostgreSQL服务的启动与停止 214
14.3 PostgreSQL的基本操作 214
14.3.1 pgAdmin III的启动 214
14.3.2 伺服器的连线 214
14.3.3 创建一个新资料库 215
14.3.4 创建一个表 215
14.3.5 对表中数据的操作 217
14.3.6 SQL语句的执行 217
14.4 使用PHP存取PostgreSQL资料库 218
14.4.1 使用PHP的PostgreSQL扩展 218
14.4.2 资料库的连线与关闭 218
14.4.3 执行SQL语句 219
14.4.4 获得查询结果集中的记录数 220
14.4.5 逐行获取结果集中的每一条记录 221
14.4.6 数据的插入、更新和删除 222
14.4.7 执行动态SQL语句 225
14.4.8 information_schema 227
14.5 小结 228
第15章 SQL Server与PHP的套用 229
前面两章对PHP与MySQL和PostgreSQL资料库伺服器的连线进行了简单介绍。在实际套用中,由于MySQL和PostgreSQL的大型数据处理能力比较差,因而往往使用较大型的资料库系统进行部署。SQL Server就是微软推出的一款适合较大型系统使用的资料库伺服器软体。本章将对SQL Server与PHP的套用进行介绍。
15.1 SQL Server简介 229
15.2 SQL Server的安装 230
15.2.1 SQL Server的安装步骤 230
15.2.2 SQL Server Management Studio 231
15.3 SQL Server的基本操作 232
15.3.1 创建一个资料库 232
15.3.2 创建一个表 232
15.3.3 对表中数据的操作 233
15.3.4 SQL语句的执行 233
15.4 使用PHP存取SQL Server资料库 234
15.4.1 使用PHP的mssql扩展 234
15.4.2 资料库的连线与关闭 234
15.4.3 执行SQL语句 235
15.4.4 获得查询结果集中的记录数 236
15.4.5 逐行获取结果集中的每一条记录 237
15.5 小结 239
第16章 Oracle与PHP的套用 240
上一章介绍了SQL Server与PHP的套用。与SQL Server类似,Oracle是甲骨文公司推出的一款大型资料库管理系统。在实际套用中,Oracle具有更高的数据处理和管理能力。,Oracle受到了很多大型企业的青睐。本章将介绍Oracle的基本操作以及与PHP的套用。
16.1 Oracle简介 240
16.2 Oracle的安装 241
16.2.1 Oracle的安装过程 241
16.2.2 Oracle Application Express 241
16.3 Oracle的基本操作 242
16.3.1 创建一个表 242
16.3.2 对表中数据的操作 244
16.3.3 SQL语句的执行 244
16.4 使用PHP存取Oracle资料库 245
16.4.1 使用PHP的oci8扩展 245
16.4.2 资料库的连线与关闭 246
16.4.3 执行SQL语句 246
16.4.4 逐行获取结果集中的每一条记录 247
16.5 小结 248
第17章 不同资料库的差异 249
目前市场上流行的资料库有很多种,虽然这些资料库在开发时遵循同样的一个标準,,每种资料库都有一些与其他同类产品不一样的地方。本章将主要介绍不同种资料库间的差异,并对PHP与不同资料库的操作上的差异作一些介绍。
17.1 SQL语言标準以及常见关係型资料库的SQL扩展 249
17.1.1 ANSI SQL语言标準 249
17.1.2 MySQL对ANSI SQL的扩充 250
17.1.3 SQL Server的T-SQL 251
17.1.4 Oracle的PL/SQL 252
17.2 PHP资料库套用的差异 253
17.2.1 MySQL与PHP的套用 253
17.2.2 PostgreSQL与PHP的套用 253
17.2.3 SQL Server与PHP的套用 254
17.2.4 Oracle与PHP的套用 255
17.2.5 SQLite与PHP的套用 255
17.2.6 Access与PHP的套用 256
17.2.7 ODBC与PHP的套用 256
17.3 小结 258
第3篇 PHP的高级套用
第18章 PEAR、PECL的套用 260
本书前面的章节介绍了PHP的基本使用以及与资料库结合的实例。通过对前面的学习,读者应该能够使用PHP设计并实现一些常见的功能了。很多时候,并不需要自己逐行完成套用中的所有代码,因为很多常见的功能可能早已被人开发出来了。如果能够有效地利用这些资源,就能在实际开发中达到事半功倍的效果。本章将介绍的PEAR与PECL就是这样的资源库。
18.1 PEAR与PECL的介绍 260
18.2 PEAR类库组件的安装 260
18.3 PEAR类库的安装与使用 264
18.3.1 查看已安装PEAR包 264
18.3.2 查看PEAR包的详细信息 264
18.3.3 安装一个PEAR包 265
18.3.4 PEAR包的升级 266
18.3.5 PEAR包的使用 266
18.4 常用的PEAR类库实例 266
18.4.1 使用DB类库进行资料库查询 267
18.4.2 使用Auth_HTTP类库进行身份校验 269
18.4.3 使用HTML_Template_IT类库进行模板替换 271
18.5 PECL扩展库的安装与使用 272
18.6 PECL扩展库套用实例——Zip扩展 272
18.6.1 Zip扩展的安装 273
18.6.2 一个Zip扩展套用实例 273
18.7 小结 274
第19章 ADOdb类库套用 275
本书第2篇介绍了PHP与MySQL等几种常用资料库的结合使用。PHP提供了多种资料库访问组件来访问不同类型的资料库。PHP的这种机制为PHP程式设计师製造了很多麻烦,为了访问不同种类的资料库,不得不记住多种多样的资料库存取函式。而本章将要介绍的ADOdb类库则有效地解决了这个问题。ADOdb类库通过对不同资料库的差异封装,可使PHP套用可以轻鬆地在不同的资料库之间进行切换。
19.1 ADOdb介绍 275
19.1.1 ADOdb的优势 275
19.1.2 ADOdb的适用场合 276
19.2 ADOdb类库的安装与配置 276
19.2.1 ADOdb的下载与安装 276
19.2.2 ADOdb的第一个测试程式 276
19.3 ADOdb的常用资料库操作 278
19.3.1 连线资料库 278
19.3.2 数据的插入、更新和删除 281
19.3.3 数据查询 281
19.3.4 记录分页的实现 283
19.3.5 多个资料库的连线方法 285
19.4 ADOdb的程式调试 286
19.5 小结 288
第20章 FPDF类库套用 289
PDF文档格式是当前流行的电子文档与电子表格的一种标準格式。PDF提供了完善的压缩处理,无论创建者创建的PDF文档使用了什幺字型,使用了什幺样的图片或者版式设计,浏览者都可以通过免费的Adobe Reader对其进行阅读。本章将要介绍的是一个可以用PHP创建PDF文档的类库FPDF。
20.1 FPDF简介 289
20.2 FPDF的安装与配置 289
20.3 FPDF创建PDF文档 289
20.3.1 FPDF创建Hello World 290
20.3.2 在PDF中插入图片 291
20.3.3 页眉与页脚 292
20.3.4 绘製表格 293
20.4 为FPDF增加中文支持 295
20.5 FPDF的实际套用 296
20.5.1 为文章系统创建PDF页面 297
20.5.2 动态生成企业产品名录 299
20.6 小结 300
第21章 PHP的快取与静态化套用 301
前面已经介绍了许多PHP套用的例子,这些例子无一例外是通过访问PHP脚本档案来完成的。用户每次在浏览器端的访问都是对PHP脚本的执行过程,程式根据用户的需要返回信息。对于一些大型系统,访问量往往很大,频繁的动态操作与资料库操作大大加重了伺服器的负担。
在这种情况下,通常使用快取技术或者静态化操作。也就是将PHP脚本的页面结果放到快取中,或者放到静态HTML档案中。这样,访问者在访问页面时,不必重新执行动态PHP代码即可获得结果,可大大缓解伺服器的负担。本章将介绍快取机制与静态化的原理,以及使用PHP实现静态化的方法。
21.1 为什幺要静态化 301
21.2 大型套用的快取机制与静态化 304
21.2.1 快取机制 304
21.2.2 静态化机制 305
21.3 PHP如何实现静态化 305
21.3.1 根据模板生成静态页面 305
21.3.2 资料库与静态页的关係 306
21.3.3 静态页内容的修改 308
21.3.4 模板的替换 309
21.3.5 静态页上的动态操作 310
21.3.6 静态页面档案的目录 311
21.4 小结 314
第22章 PHP与XML格式操作 315
XML是一种流行的半结构化档案格式,以一种类似资料库的格式存储数据。在实际套用中,一些简单的、安全性较低的数据往往使用XML档案的格式进行存储。这样做一方面可以通过减少与资料库的互动性操作提高读取效率,另一方面可以有效利用XML的优越性降低程式的编写难度。
PHP提供了一整套的读取XML档案的方法,很容易就可以编写基于XML的脚本程式。本章将介绍PHP与XML的操作方法,并对几个常用的XML类库作一些简要介绍。
22.1 XML简介 315
22.2 简单的XML操作 316
22.2.1 创建一个SimpleXML对象 316
22.2.2 读取SimpleXML对象中的XML数据 318
22.2.3 XML数据的修改 322
22.2.4 标準化XML数据 322
22.2.5 XML数据的存储 322
22.3 XML文档的动态创建 323
22.3.1 DOM简介 324
22.3.2 DOM文档的创建与使用 324
22.3.3 DOM元素的操作 327
22.3.4 DOM节点的操作 329
22.3.5 DOM组件操作实例 329
22.4 XSLT的使用 330
22.4.1 XSLT简介 331
22.4.2 使用PHP与XSLT生成HTML页面 332
22.5 XML套用实例一——留言本 333
22.5.1 XML档案结构设计 333
22.5.2 提交页面的编写 334
22.5.3 显示页面的编写 335
22.6 XML套用实例二——为网站生成RSS页面 336
22.6.1 什幺是RSS 336
22.6.2 RSS页面的编写 338
22.7 小结 339
第23章 Smarty类库 340
前面的章节介绍了很多在HTML页面中内嵌PHP代码的例子。随着Web技术的不断发展,很多Web程式设计师已经不再满足于这种在HTML页面中内嵌PHP代码的方法。因为这样做的一个很大弊端是为后期维护带来了很多麻烦,程式设计师不得不修改PHP代码来迎合页面设计的改动。
本章要介绍的Smarty类库有效地解决了这一问题。Smarty类库通过建立模板库来存放静态HTML页面中的HTML代码,并使用PHP代码对其中的元素进行赋值。这样,当页面的设计发生变化时,只需要修改模板页面就可以了。
23.1 Smarty简介 340
23.2 Smarty的安装与配置 341
23.2.1 Smarty的安装 341
23.2.2 Smarty的配置 341
23.3 Smarty程式设计 342
23.3.1 简单的Smarty程式设计 342
23.3.2 模板对象属性的定义 343
23.3.3 Smarty程式编写的一般步骤 344
23.4 Smarty模板设计 344
23.4.1 模板中的变数 344
23.4.2 变数的修饰 345
23.4.3 区域循环方法 346
23.4.4 模板中的条件判断 348
23.4.5 外部档案的载入 350
23.5 Smarty的实际套用——多模板网站 351
23.5.1 模板的设计 351
23.5.2 页面实现 352
23.6 小结 353
第24章 ThinkPHP框架 354
上一章介绍了使用Smarty类库进行套用系统开发。Smarty使用模板构架有效地分离了代码与页面,当页面发生变化的时候,程式设计师并不需要修改代码。本章将要介绍一种基于模板的开发框架——ThinkPHP框架。
ThinkPHP框架是近两年刚刚发展起来的一个PHP套用开发框架。该框架借鉴了很多优秀框架的经验和模式,使用最通用的MVC构架和面向对象理念,是一款可以实现网站快速开发的优秀的轻量级框架。
24.1 ThinkPHP的安装与项目创建 354
24.1.1 ThinkPHP的获取与安装 354
24.1.2 项目入口档案 354
24.1.3 项目的创建 355
24.2 项目的配置 355
24.3 控制器类的创建 356
24.3.1 控制器的模组与操作 356
24.3.2 URL的处理 358
24.4 模型类的创建 358
24.4.1 模型的定义与实例化 359
24.4.2 资料库的连线与操作 360
24.5 模板档案的编写 362
24.5.1 模板中的变数 362
24.5.2 模板中函式的使用 363
24.5.3 几种基本标籤的使用 364
24.6 ThinkPHP套用实例——线上日程表 366
24.6.1 资料库的设计 366
24.6.2 模板的设计 367
24.6.3 控制器的实现 368
24.7 小结 369
第25章 Zend Framework框架 370
随着Web技术的发展,传统的编程模式已经越来越不能满足日益快速的技术发展。近些年来,一些致力于整合功能的框架技术蓬勃发展起来。上一章介绍的ThinkPHP框架是一个可以满足基本需要的轻量级框架。而由Zend公司构建的框架Zend Framework则更适合大型系统的开发。本章将简要介绍Zend Framework的使用方法。
25.1 Zend Framework的安装与项目创建 370
25.2 dispatcher与Bootstrap 372
25.3 控制器程式的编写 372
25.3.1 首页控制器程式的编写 373
25.3.2 其他页面控制器程式的编写 374
25.4 视图档案的调用 376
25.4.1 默认视图档案的使用 376
25.4.2 模板档案的调用 376
25.5 数据模型的生成 377
25.5.1 资料库的连线 377
25.5.2 数据模型的创建 378
25.5.3 数据模型的使用 379
25.6 用户表单的处理 380
25.6.1 用户表单的生成 380
25.6.2 表单数据的验证与过滤 382
25.7 Zend Framework套用实例——留言本 384
25.8 小结 388
第26章 CakePHP框架 389
CakePHP是近两年来新生的一款开源的PHP框架。该框架的设计理念来自Ruby的Rails框架,使PHP程式设计师可以比较迅速地创建Web应用程式。CakePHP框架使用了MVC体系结构,兼容PHP 4和PHP 5,并且拥有很灵活的数据模型与许可权管理机制。,近年来CakePHP受到了越来越多PHP程式设计师的关注与青睐。CakePHP的最新版本为1.3.0,本章将以该版本为例简要介绍CakePHP的使用方法。
26.1 CakePHP的安装与配置 389
26.2 Scaffolding简介 391
26.3 CakePHP的数据模型 392
26.3.1 数据模型的定义 392
26.3.2 数据的查询 393
26.3.3 数据的保存 395
26.3.4 数据的删除 397
26.3.5 对象的关联 398
26.4 控制器的编写 400
26.4.1 控制器的基本使用 400
26.4.2 控制器的属性与方法 401
26.5 视图的调用 404
26.5.1 视图的布局 404
26.5.2 视图的元素 405
26.5.3 视图的快取 405
26.6 ACL许可权控制 406
26.6.1 什幺是ACL 406
26.6.2 使用配置档案定义许可权 407
26.6.3 使用资料库定义许可权 408
26.7 CakePHP套用实例——员工工资单 409
26.7.1 登录框与许可权控制 409
26.7.2 工资单页面的编写 410
26.8 小结 412
第27章 Symfony框架 413
前面几章介绍了几种常见的PHP开发框架。本章将继续介绍另一种近几年流行起来的新的开发框架Symfony。Symfony框架也是一款基于MVC架构的框架,并且使用到了一些其他PHP开源项目的部分代码以增强其功能。,近年来Symfony受到了越来越多大型项目的青睐。Symfony框架的最新版本为1.4.3,本章将以该版本为例简要介绍Symfony的使用方法。
27.1 Symfony的安装 413
27.2 开始一个新项目 414
27.3 Symfony的数据模型 416
27.3.1 Schema的编写 416
27.3.2 数据模型初始化 420
27.4 控制器与视图 421
27.4.1 项目的基本构架 421
27.4.2 视图的布局 422
27.4.3 控制器与模板 424
27.5 管理生成器 426
27.5.1 管理后台的生成 427
27.5.2 管理后台的配置 427
27.6 Symfony套用实例——个人部落格 430
27.7 小结 433
第28章 PHP与图像操作 434
PHP不仅可以用来生成HTML页面,还可以用来创建和操作二进制档案,例如图片。使用PHP程式动态生成图片可以实现生成缩略图、验证码等多种功能,在实际套用中很常用。在PHP中,通常使用GD库来实现对图像的操作。本章将介绍如何使用GD库来操作图像档案。
28.1 PHP图像函式馆简介 434
28.2 GD库的配置 434
28.3 一个简单图像创建程式 436
28.4 GD库的套用实例 437
28.4.1 使用GD库创建图片缩略图 437
28.4.2 使用GD库生成验证码 439
28.4.3 使用GD库下载远程图片 441
28.4.4 使用GD库为页面增加水印 441
28.5 小结 442
第29章 JpGraph创建统计图 443
上一章介绍了如何使用GD库来创建图像。使用GD库提供的各种函式可以生成多种图像,,如果需要在PHP中创建一些统计图,使用GD库就显得很麻烦了。本章将要介绍一种专门用于输出统计图的JpGraph库。该库在数据统计等方面有很大优势。在实际套用中,可以很容易使用JpGraph生成大方得体的统计图。
29.1 JpGraph简介 443
29.2 JpGraph的安装与配置 443
29.2.1 JpGraph的安装 443
29.2.2 JpGraph的配置 444
29.3 JpGraph绘製统计图实例 444
29.3.1 简单的X-Y坐标图 444
29.3.2 改进的X-Y坐标图 447
29.3.3 柱形图 450
29.3.4 饼图 451
29.3.5 3D饼图 452
29.4 JpGraph套用实例——工厂销量查询系统 453
29.5 小结 457
第30章 PHP访问LDAP伺服器 458
LDAP的全称是“轻量级目录访问协定(Lightweight Directory Access Protocol)”,是一种简单的目录协定。所谓目录,是一种专门的资料库,可以服务于任何应用程式。在企业套用中使用LDAP可以让企业範围内的所有应用程式从LDAP目录中获取信息,使应用程式可以通过网路直接从LDAP目录获取信息,而不再局限于作业系统与伺服器的类型。本章将主要介绍如何使用PHP来访问LDAP。
30.1 LDAP简介 458
30.2 LDAP伺服器的安装与配置 459
30.2.1 OpenLDAP的安装 459
30.2.2 OpenLDAP的配置 460
30.2.3 OpenLDAP的启动与关闭 461
30.2.4 OpenLDAP的数据操作 462
30.2.5 phpLDAPadmin简介 463
30.3 PHP中LDAP扩展的配置 464
30.4 PHP与LDAP的相关操作 464
30.4.1 连线LDAP伺服器 464
30.4.2 绑定LDAP伺服器 465
30.4.3 断开LDAP伺服器 465
30.4.4 查询LDAP目录内容 465
30.4.5 获得查询结果中的值 467
30.4.6 计算查询结果中的记录数 468
30.4.7 向LDAP添加一条新记录 469
30.4.8 更新LDAP中的一条记录 469
30.4.9 从LDAP中删除一条新记录 470
30.4.10 错误处理 470
30.5 使用LDAP验证用户身份 471
30.6 小结 472
第31章 PHP与邮件系统 473
在实际套用中,通常需要使用邮件系统来与网站的访问者交流。例如,一个网站的新注册用户可以通过邮件来获取注册确认信息,也可以通过邮件来找回密码等。,在一些常见的网站系统中,往往包含邮件传送的功能。本章将介绍如何使用PHP来传送邮件。
31.1 PHP邮件传送功能配置 473
31.1.1 PHP中的SMTP功能配置 473
31.1.2 建立自己的SMTP伺服器 474
31.2 PHP中的mail函式 476
31.2.1 简单的邮件传送方法 476
31.2.2 传送HTML格式文本 477
31.2.3 传送带附属档案的邮件 477
31.3 一个简单的邮件传送类 479
31.3.1 邮件传送类的创建 479
31.3.2 邮件传送系统的实现 481
31.4 小结 483
第32章 PHP最佳化器与加速器 484
PHP代码在运行时是通过编译器编译成中间代码,然后再被伺服器运行得到用户所需要的结果。,中间代码的优劣直接决定了代码的最终运行速度。目前,有一些常见的PHP加速器可以通过对中间代码进行最佳化来提高PHP代码的运行速度。这样,网站的访问者就可以更快地打开网页。
本章将介绍几款常见的PHP加速器,读者可以根据实际情况选择其中的一款安装,从而有效地提高PHP的运行效率。
32.1 最佳化器Zend Optimizer 484
32.1.1 Zend Optimizer的安装 484
32.1.2 Zend Optimizer的配置 486
32.2 加速器PHP Accelerator 487
32.2.1 PHP Accelerator的安装 487
32.2.2 PHP Accelerator的配置 488
32.3 开源的最佳化器Turck MMCache 488
32.3.1 Turck MMCache的安装 489
32.3.2 Turck MMCache的配置 489
32.4 开源的加速器eAccelerator 490
32.5 小结 490
第4篇 PHP与实际项目
第33章 用PHP构建内容管理系统CMS 492
CMS是“内容管理系统(Content Management System)”的缩写,任何基于内容的网站系统都可以称为CMS。例如,文章管理、图片管理以及综合网站管理程式都是CMS的典型实现。一般的CMS系统都是基于模板设计,网站开发人员可以通过简单地修改模板的设计快速实现网站所需功能。本章将以一个简单的文章管理程式为例,说明如何开发一个CMS系统。
33.1 了解CMS需求 492
33.2 资料库设计 492
33.3 关键技术的实现 495
33.3.1 资料库连线公用代码 496
33.3.2 网站开关的设计 496
33.3.3 模板更换机制 496
33.3.4 HTML编码转换 497
33.4 页面代码设计 497
33.4.1 首页的实现 497
33.4.2 注册页面的实现 501
33.4.3 分类文章列表页面与文章显示页面的实现 503
33.4.4 投稿页面与添加新文章页面的实现 507
33.4.5 文章管理页面的实现 509
33.4.6 文章类别维护页面的实现 513
33.4.7 网站参数配置页面的实现 518
33.4.8 网站模板管理页面的实现 521
33.4.9 退出登录页面的实现 524
33.5 小结 525
第34章 用PHP构建搜寻引擎 526
网际网路时代是一个信息爆炸的时代,面对着信息高速膨胀的网际网路,怎样快捷有效地得到自己所需要的信息成为了一个关键的课题。于是,各种各样的搜寻引擎在网际网路上诞生了出来,例如,Google、Yahoo和百度等,都是流行的搜寻引擎。这些搜寻引擎已经逐渐成为人们生活不可或缺的一部分。
本章将要介绍如何使用PHP来进行信息搜寻,以及调用这些现有的搜寻引擎进行搜寻。
34.1 PHP对资料库数据的搜寻 526
34.1.1 资料库创建 526
34.1.2 搜寻页面的设计 527
34.1.3 内容显示页面的设计 528
34.1.4 系统集成的调度策略 529
34.2 PHP对文本档案的搜寻 530
34.3 PHP对现有搜寻引擎的调用 531
34.4 小结 533
第35章 PHP与企业办公自动化OA系统 534
OA是办公自动化(Office Automation)的缩写。OA系统是基于Internet或Intranet的概念、以企业工作流为基础构建的办公自动化系统。OA系统能够有效地对企业信息进行管理,并且在企业内部共享信息。OA系统的存在改变了过去複杂低效的办公模式,使办公管理和决策变得更加简单。本章将以一个简单的OA系统为例来介绍如何使用PHP开发OA系统。
35.1 了解企业OA系统的需求 534
35.2 资料库设计 535
35.3 关键技术的实现 536
35.3.1 根据登录用户的许可权进入不同的页面 536
35.3.2 项目与任务状态的级联更新 537
35.4 页面代码的设计 538
35.4.1 公共资料库连线代码 538
35.4.2 登录页面的设计 538
35.4.3 管理员/经理项目列表页面的设计 540
35.4.4 创建新项目页面的设计 542
35.4.5 项目修改页面的设计 545
35.4.6 普通员工任务列表页面的设计 550
35.4.7 新账号分配页面的设计 552
35.4.8 账号许可权设定页面的设计 555
35.4.9 过期项目统计页面的设计 558
35.4.10 经理项目分配情况统计页面的设计 560
35.4.11 员工任务分配情况统计页面的设计 561
35.4.12 公司项目运营情况统计页面的设计 562
35.5 小结 565
第36章 PHP与流程管理系统 566
上一章介绍了如何使用PHP构建一个简单的OA系统。在企业的日常工作中,往往需要遵循一些流程来工作。例如,报销发票的流程可以是报销人提出申请→相关经理批准→财务主管批准→支付报销金额给报销申请人等。流程管理系统可以简单地实现对流程中各个过程进行追蹤并提示相关人员完成流程中相应的步骤。本章将以一个设备维修流程的管理系统为例简要介绍如何使用PHP来构建流程管理系统。
36.1 流程管理系统的需求 566
36.2 资料库设计 567
36.3 关键技术的实现 569
36.3.1 使用触发器来记录请求更新日誌 569
36.3.2 根据角色的不同对请求进行不同的操作 569
36.4 页面代码的实现 570
36.4.1 设备维修请求列表页面的实现 570
36.4.2 提交新请求页面的实现 572
36.4.3 需要执行操作的请求列表页面的实现 574
36.4.4 对请求执行操作页面的实现 576
36.4.5 操作日誌列表页面的实现 582
36.5 小结 584
第37章 PHP与资源管理系统 585
前面两章站在企业层面上介绍了如何使用PHP创建企业OA系统和流程管理系统。目前常见的企业级系统还包括资源管理系统(Enterprise Resource Management System,ERM)。所谓资源包含企业中的网路资源、工程方面的资源和财务资源等。一个完整的资源管理系统应该包括对资源的数据存储、业务分析以及辅助决策等,并且要与其他现有系统具有良好的接口。本章将以一个小型库存资源管理系统为例,简要介绍如何使用PHP构建一个资源管理系统。
37.1 资源管理系统的需求 585
37.2 资料库设计 586
37.3 关键技术的实现 588
37.3.1 使用SQL计算奖金额度 589
37.3.2 使用触发器来限制奖金额度 589
37.3.3 使用存储过程从其他数据表获取数据 590
37.3.4 自动生成PHP代码控制网站开关 590
37.3.5 使用JpGraph生成统计图 591
37.4 各功能模组的具体实现 592
37.4.1 用户许可权认证的实现 592
37.4.2 订单输入模组的实现 593
37.4.3 库存管理模组的实现 597
37.4.4 账目管理模组的实现 601
37.4.5 奖金计算模组的实现 606
37.4.6 年度统计模组的实现 609
37.5 小结 611
第38章 多国语言处理策略 612
前面几章介绍了如何使用PHP来开发一些实际项目。随着信息全球化的高速发展,套用系统向全球化发展的趋势也越加明显。例如,一个跨国企业的办公系统可能要面向这家跨国企业分布在全球的多家分公司,在开发这个办公系统时可能就需要对多种语言提供支持。本章将以一个小型系统为例来介绍一下如何对PHP开发的系统提供多国语言支持的功能。
38.1 对字元编码与GB2312、GBK和UTF-8的理解 612
38.1.1 GB2312与GBK 612
38.1.2 Unicode、UCS与UTF-8 612
38.1.3 网页编码的实现 613
38.2 GLS设计思想简介 614
38.3 客户端语言选项的设定与获取 615
38.3.1 客户端语言选项的设定 615
38.3.2 使用PHP获取客户端语言选项 615
38.4 一个简单的带有多国语言支持的套用开发 615
38.4.1 资料库设计 615
38.4.2 页面代码的开发 616
38.4.3 语言设定页面的开发 620
38.4.4 语言配置档案选取页面的开发 620
38.4.5 语言配置档案的设计 621
38.5 小结 624
第39章 PHP在入口网站中的套用 625
在网际网路发达的今天,网民的数量也在高速增长,越来越多的大型网站通过将各种数据资源和网际网路资源结合起来构成了入口网站。入口网站通过将新闻系统、聊天室、BBS和电子商务等多种套用系统整合起来为用户提供了丰富的网际网路信息。本章将主要介绍PHP在入口网站中的一些套用。
39.1 入口网站的特点 625
39.2 静态快取和动态快取 626
39.2.1 静态快取与动态快取简介 626
39.2.2 一个对系统实现静态快取的例子 626
39.2.3 一个对系统实现动态快取的例子 628
39.3 入口网站中的互动设计 630
39.3.1 什幺是互动设计 631
39.3.2 一个不好的互动设计例子 631
39.3.3 改进的互动设计例子 633
39.4 负载均衡技术简介 635
39.4.1 常用的负载均衡技术 635
39.4.2 常用的负载均衡算法 636
39.5 一个使用用户排队机制解决网站大访问量的例子 636
39.6 小结 638
第5篇 PHP的扩展套用
第40章 PHP与网路客户端 640
前面介绍了使用PHP构建伺服器端页面,用户可以通过浏览器访问远程伺服器上的PHP页面来实现与伺服器的互动操作。除此之外,PHP还可以用来开发网路客户端,用户可以在自己的主机上访问远程伺服器,甚至可以通过命令行来与远程伺服器进行互动。本章将介绍如何使用PHP访问远程Web伺服器和FTP伺服器,以及使用命令行来运行PHP代码。
40.1 PHP访问远程Web页面 640
40.1.1 fsockopen函式 640
40.1.2 一个远程提交数据的实例 641
40.2 PHP订阅RSS 642
40.2.1 下载远程RSS 642
40.2.2 RSS的解析与保存 643
40.3 PHP访问FTP伺服器 644
40.3.1 连线和断开FTP伺服器 644
40.3.2 登录FTP伺服器 644
40.3.3 获取档案列表 645
40.3.4 档案的上传、下载和删除 646
40.3.5 目录的创建和删除 647
40.4 PHP的命令行模式 648
40.4.1 PHP命令行程式简介 648
40.4.2 执行参数的获取 649
40.4.3 一个使用命令行方式访问FTP的实例 649
40.5 小结 652
第41章 PHP与XML-RPC、SOAP 653
前面介绍了如何通过访问PHP页面来实现与伺服器的互动。除此之外,PHP还支持开发供程式调用的接口页面。通过这些接口,远程程式可以很容易地实现与伺服器的互动操作,而不需要複杂地通过对一般页面进行读取来进行互动。本章将介绍两种最常见的远程调用的技术以及使用PHP的实现方法。
41.1 XML-RPC简介 653
41.1.1 客户端请求的XML格式 653
41.1.2 伺服器回响的XML格式 656
41.1.3 错误信息的XML格式 656
41.2 PHP与XML-RPC的结合实例 657
41.2.1 PHP的XML-RPC库介绍 657
41.2.2 PHP伺服器端页面的编写 658
41.2.3 PHP客户端页面的编写 659
41.3 SOAP简介 659
41.4 PHP的SOAP套用实例 660
41.4.1 SOAP扩展库的使用方法 660
41.4.2 伺服器端的编写 661
41.4.3 客户端的编写 662
41.5 小结 662
第42章 PHP与Web Service 663
上一章介绍了如何使用PHP通过XML-RPC和SOAP进行远程访问以及远程过程调用的方法,这些技术不单单实现了通过浏览器对页面的直接访问,而且提供了可供程式调用的函式为客户端程式提供了便利。这种技术往往被称为Web Service,在网际网路技术发展的今天,Web Service提供了一种可程式的数据接口方便了其他程式或客户端的调用。本章将介绍Web Service技术以及如何使用PHP来实现。
42.1 Web Service简介 663
42.2 WSDL、UDDI与Web Service 664
42.2.1 WSDL简介 664
42.2.2 UDDI简介 664
42.3 PHP与Web Service的互动操作 665
42.3.1 NuSOAP类库 665
42.3.2 PHP创建Web Service 666
42.3.3 PHP访问Web Service 668
42.4 小结 670
第43章 PHP与Ajax 671
Ajax是近年来刚刚流行起来的一种技术,全称是Asynchronous JavaScript and XML(异步JavaScript和XML)。Ajax是多种技术的综合套用,主要包括JavaScript技术、XML技术、DOM技术和XMLHttpRequest控制项等。Ajax作为Web 2.0的一个重要技术,大大推动了Web技术的发展。本章将结合PHP来简要介绍一下Ajax的一些常见套用。
43.1 Ajax简介 671
43.1.1 Ajax工作原理 671
43.1.2 Ajax的优势与劣势 672
43.2 XMLHttpRequest的使用 672
43.2.1 Ajax初始化 672
43.2.2 XMLHttpRequest的属性和方法 673
43.2.3 简单的伺服器请求 674
43.2.4 HTML档案的读取 675
43.2.5 XML档案的读取 677
43.3 PHP与Ajax的互动 679
43.3.1 使用GET方式与PHP互动 679
43.3.2 使用POST方式与PHP互动 681
43.4 Ajax套用实例 682
43.4.1 用户名唯一性验证的实现 682
43.4.2 动态列表框的实现 684
43.4.3 局部刷新页面的实现 685
43.4.4 自动刷新页面的实现 688
43.4.5 进度条的实现 689
43.4.6 表单输入提示的实现 691
43.5 小结 693
第44章 PHP扩展的开发 694
本书前面的章节介绍了PHP的开发与套用。在进行PHP开发时,有时难免遇到无法使用PHP解决或很难使用PHP来解决的问题,这时就需要使用PHP扩展功能来扩展PHP的功能了。本章将简要介绍如何在Windows平台下进行PHP扩展的开发。
44.1 PHP扩展开发简介 694
44.2 使用Visual C++编写PHP扩展 694
44.2.1 PHP扩展开发的前期準备 695
44.2.2 PHP扩展代码模板的生成 696
44.2.3 模板代码的修改与编译 697
44.2.4 扩展模组的调用 699
44.3 一个扩展套用实例的开发——简单加密解密函式 700
44.3.1 加密函式的编写 700
44.3.2 解密函式的编写 701
44.3.3 测试代码的编写 701
44.4 小结 702