简介
《程序天下?PHP +Ajax Web 2.0编程技术与项目开发大全》系统、具体地介绍了PHP编程基础、项目开发技巧,以及PHP与Ajax的交互设计。《程序天下?PHP +Ajax Web 2.0编程技术与项目开发大全》共分24章,以实际的项目作为例子贯穿始终,内容涵盖了PHP项目开发的各个方面,从基础语法、数据库基础、需求分析、数据库设计到附件处理、评论处理、站内搜索、登录验证、后台管理、安全部署等各方面的实用技巧。此外,《程序天下?PHP +Ajax Web 2.0编程技术与项目开发大全》重点介绍了Ajax技术的应用。《程序天下?PHP +Ajax Web 2.0编程技术与项目开发大全》最大的特色在于每一章中涉及的例子都经过精挑细选,具有很强的针对性,力求让读者轻松掌握PHP项目开发的技巧和Ajax改善用户体验的各种技术,学习尽可能多的知识。
目录
第一篇 PHP开发入门.
第1章 开发环境配置 2
在开始学习PHP之前,需要搭建开发环境。本章将结合实际项目经验来谈在Windows环境下配置Apache+PHP+ MySQL+ phpMyAdmin,在Windows环境下配置IIS+PHP+MySQL+ phpMyAdmin,以及在Linux环境下配置Apache+PHP+ MySQL+ phpMyAdmin等。
1.1 在Windows环境下配置IIS+PHP+MySQL+phpMyAdmin 3
1.1.1 安装IIS 3
1.1.2 安装PHP 4
1.1.3 PHP设置 5
1.1.4 安装MySQL 9
1.1.5 安装Zend Optimizer 10
1.1.6 安装phpMyAdmin 11
1.2 在Windows环境下配置Apache+PHP+MySQL+phpMyAdmin 13
1.3 LAMP平台的搭建 15
1.3.1 安装Apache 15
1.3.2 安装MySQL 16
1.3.3 安装PHP 18
1.3.4 搭建快速开发平台 18
1.4 本章小结 19
第2章 PHP语法 20
前面的章节讲解了PHP的运行平台的搭建和配置。本章将在这些知识的基础上讲解编程中的一些概念和基本语法。本章的内容包括PHP语法的格式、注释、变量、运算符、数据类型、类型强制转换等知识。通过对本章的学习,可以对该语言有一个大致的了解,编写一些简单程序。
2.1 PHP入门 21
2.1.1 第一个PHP网页 21
2.1.2 网页中嵌入PHP程序 22
2.1.3 语法格式 22
2.1.4 PHP中的注释 23
2.2 PHP的常量与变量 24
2.2.1 什么是变量和常量 24
2.2.2 定义变量 25
2.2.3 定义常量 26
2.2.4 变量的作用域 27
2.2.5 变量的输出 29
2.2.6 PHP的表单变量 29
2.2.7 PHP的环境变量 31
2.2.8 PHP的系统常量 33
2.3 PHP的运算符 34
2.3.1 算术运算符 34
2.3.2 条件运算符与逻辑运算符 35
2.3.3 字符串运算符 37
2.3.4 PHP的运算优先级 37
2.4 PHP的数据类型 38
2.4.1 常用数据类型 39
2.4.2 特殊的数据类型 39
2.4.3 数据类型的查看和验证 40
2.5 PHP数据类型的转换 41
2.5.1 转换成整型 41
2.5.2 转换成字符串型 42
2.5.3 转换成浮点型 42
2.5.4 转换成布尔型 43
2.5.5 强制类型转换 44
2.6 实例 45
2.6.1 静态变量使用实例 45
2.6.2 数学运算符与优先级实例 46
2.7 小结 46
第3章 PHP的常用语句 47
本章将重点讲解PHP的语句。一些运算符和表达式,后面用分号隔开,能够完成一定的逻辑功能,就构成一个语句。复杂的程序都是由简单的语句构成的。流程控制语句是本章的重点,程序中复杂的功能都是通过流程控制语句来完成的。通过本章的学习,读者需要掌握流程控制语句、常用的表达式、文件包含等PHP编程技巧。
3.1 流程控制语句 48
3.1.1 if条件语句 48
3.1.2 switch条件语句 50
3.1.3 for循环语句 52
3.1.4 while循环语句 54
3.1.5 do while循环语句 55
3.1.6 转移控制语句:continue 56
3.1.7 转移控制语句:break 57
3.1.8 转移控制语句:return 57
3.2 流程控制语句实例 58
3.2.1 实例:输出表格 58
3.2.2 实例:输出九九乘法口诀表 59
3.2.3 实例:解一元二次方程 60
3.3 文件包含 62
3.3.1 使用require和require_once语句包含文件 62
3.3.2 使用include和include_once语句包含文件 65
3.4 小结 66
第4章 函数 67
PHP程序中会调用各种函数,函数实现了程序中的各种功能,也实现了代码的结构化。函数分为系统函数和自定义函数两种。系统函数是PHP自带的函数,系统函数无法实现的功能需要自己编写自定义函数。本章重点介绍函数的调用和自定义函数的编写。
4.1 函数的定义与调用 68
4.1.1 函数的调用 68
4.1.2 自定义函数 69
4.1.3 自定义函数实例 70
4.2 数学函数 71
4.2.1 rand与srand产生随机数 71
4.2.2 随机数生成实例:生成数字代码 72
4.2.3 数学函数 73
4.3 时间函数 74
4.3.1 获得日期时间信息函数getdate 74
4.3.2 获得当前时间函数gettimeofday 76
4.3.3 日期验证函数checkdate 77
4.3.4 格式化本地日期时间函数date 78
4.3.5 获得本地化时间戳函数mktime 80
4.4 小结 81
第5章 数组 82
数组就是一组具有相同数据类型的变量的集合。在程序中调用这些变量时,使用相同的变量名和键。数组中的每一个变量称作数组的一个元素。使用数组,可以用循环语句来方便地处理程序中大量的数据。本章将讲解数组相关的函数和编程。
5.1 数组的操作 83
5.1.1 数组的理解 83
5.1.2 数组的建立 84
5.1.3 数组的访问 86
5.1.4 数组的遍历 87
5.1.5 数组的索引与键值操作技巧 89
5.2 数组的常用函数 92
5.2.1 使用sort和rsort对数组排序 92
5.2.2 使用asort和arsort对数组排序 93
5.2.3 使用array_multisort对数组进行排序 94
5.2.4 数组与堆栈 95
5.2.5 使用array_shift和array_unshift函数访问数组 96
5.2.6 数组查找函数array_search 97
5.2.7 其他数组函数 97
5.3 数组应用实例 98
5.3.1 实例:数组的排序与访问 99
5.3.2 实例:数组的访问 100
5.4 小结 101
第6章 字符串 102
在实际编程时,常常需要进行字符串处理。PHP提供了非常丰富的字符串处理函数,而正则表达式的使用,可以更加灵活地对字符串进行模糊处理。使用正则表达式对于处理复杂的字符串非常便利。本章讲解字符串的常用操作和正则表达式的使用。
6.1 字符串的理解 103
6.2 字符串的显示与格式化 103
6.2.1 echo和print输出字符串 103
6.2.2 sprintf字符串格式化输出 104
6.3 字符串的常用操作 105
6.3.1 字符串重复函数str_repeat 105
6.3.2 字符串替换函数str_replace 106
6.3.3 字符串分解操作函数str_split 107
6.3.4 字符串分解成单词函数str_word_count 108
6.3.5 字符串查找操作函数strstr 109
6.3.6 字符串的长度函数strlen 110
6.3.7 获得字符串函数substr 110
6.4 小结 111
第二篇 PHP与MySQL数据库编程
第7章 MySQL数据库 114
Linux+Apache+MySQL+PHP方案是一个非常理想的网站解决方案。MySQL数据库是一个功能强大的数据库管理系统,在PHP网站中有着非常优秀的表现。在网站中,PHP程序是将网站的内容存储在MySQL数据库中。用户在访问网页时,查询数据库内容再生成HTML网页发送到浏览器。本章讲述MySQL的管理、SQL语句等数据库操作基础知识。
7.1 数据库的启动与关闭 115
7.1.1 服务管理方式启动与关闭MySql服务 115
7.1.2 命令行方式管理MySql服务 116
7.2 phpMyAdmin管理MySQL数据库 116
7.2.1 登录和使用phpMyAdmin 117
7.2.2 添加和删除数据库 118
7.3 在数据库中创建表 119
7.3.1 数据表的理解 119
7.3.2 MySQL的数据类型 119
7.3.3 建立数据库模型 120
7.3.4 在phpMyAdmin中创建表 120
7.4 用phpMyAdmin管理表中的数据 122
7.4.1 phpMyAdmin添加数据 122
7.4.2 phpMyAdmin查看数据 123
7.5 权限管理 123
7.5.1 添加和删除用户 124
7.5.2 设置数据库用户的权限 125
7.6 MySQL命令行管理MySQL数据库 126
7.6.1 登录MySQL命令行 126
7.6.2 新建与删除数据库 126
7.6.3 新建或删除数据库表 127
7.7 用SQL语句访问MySQL数据库 130
7.7.1 插入数据 130
7.7.2 数据查询 131
7.7.3 数据更新 136
7.7.4 数据删除 136
7.7.5 查询数据的分组与处理 137
7.8 MySQL的内置函数 139
7.9 小结 140
第8章 PHP和MySQL的应用 141
在网站项目中,网站的数据是存放在数据库中的。PHP+MySQL是一个非常好的网站解决方案,具有非常好的性能和安全性。在PHP网站中,程序常常进行数据库访问,数据库访问是通过SQL语句完成的。本章讲解PHP对MySQL数据库进行连接、表单使用、数据查询等方面的内容。本章中使用的数据库,是上一章建立的“db_stu”数据库。在进行本章学习之前,需要按照上一章的内容建立数据库。
8.1 MySQL的连接和选择数据库 142
8.1.1 连接到MySQL服务器 142
8.1.2 选择数据库 143
8.1.3 网站配置文件 144
8.2 数据库的查询操作 145
8.2.1 执行SQL语句 145
8.2.2 获取查询结果的记录数 146
8.2.3 获取查询结果的某一条记录 147
8.2.4 逐行获取记录集中的每一行数据 148
8.3 数据库访问实例 151
8.3.1 院系的添加 151
8.3.2 院系管理列表 152
8.3.3 院系的删除 153
8.3.4 院系编辑网页 153
8.3.5 添加班级 155
8.3.6 数据分页显示 156
8.3.7 数据列表的排序 159
8.4 小结 161
第三篇 商用Blog系统开发详解
第9章 项目简介及功能演示 164
本章将从一个实际的项目谈起,这个项目是一个基于Div+CSS+Ajax+PHP+ MySQL+Smarty的博客系统,为了方便说明,此处把它命名为FYblog。在以后的章节中,将以它为实例逐步详细、深入地讲解PHP项目开发,讲解流行的Ajax技术等。
本章介绍FYblog的主要功能和特点,它是学习后面章节的基础。FYblog是一个个性鲜明、技术含量较高的系统,然而系统本身并不是学习的主要目的,其中的思路、程序逻辑、实现方法、原理才是最重要的。“千里之行,始于足下”。因此,一个好的学习态度是成功的开始。
9.1 项目简介 165
9.1.1 项目优点 166
9.1.2 项目不足 166
9.2 前台体验 166
9.2.1 前台首页 166
9.2.2 文章显示与评论 167
9.2.3 标签、搜索、日历等模块.. 168
9.2.4 导航链接 169
9.3 后台功能 170
9.3.1 登录界面 171
9.3.2 “文章管理”模块 172
9.3.3 “模板管理”模块 173
9.3.4 “分类管理”模块 173
9.3.5 “评论管理”模块 173
9.3.6 “附件管理”模块 174
9.3.7 “链接管理”模块 175
9.3.8 “用户管理”模块 175
9.3.9 “系统维护”模块 176
9.3.10 “数据管理”模块 176
9.3.11 “日志管理”模块 177
9.4 程序安装与配置 178
9.4.1 phpMyAdmin导入SQL文件 178
9.4.2 通过install.php安装 180
9.5 本章小结 187
第10章 系统分析与总体设计 188
在前面章节中对平台搭建进行了详细的介绍,平台搭建与环境配置是项目开发的基础,合理的配置可以提高工作效率,有助于程序的调试与编译。环境配置好之后,就可以进行项目实践了。从本章起,将逐步介绍项目开发的流程。为了讲解方便,本章及以后章节中统一基于Windows 2003下的Apache 2.2.4+MySQL 5.0.37+PHP 5.21+phpMyAdmin 2.10环境进行介绍。
10.1 需求分析 189
10.1.1 什么是需求分析 189
10.1.2 FYblog需求分析 190
10.2 了解Web 2.0 191
10.2.1 什么是Web 2.0 191
10.2.2 Web 2.0的特点 193
10.2.3 Web 2.0的条件 194
10.3 基于Ajax的设计思路 194
10.3.1 什么是Ajax技术 194
10.3.2 Ajax技术的好处 195
10.4 基于Div+CSS的网站构架 196
10.4.1 什么是Web标准 196
10.4.2 Web标准有关代码的规范 197
10.4.3 基于Div+CSS布局的好处 198
10.5 面向对象的程序设计思想 199
10.5.1 为什么要学习面向对象 199
10.5.2 类、对象和方法 199
10.5.3 FYblog中的面向对象 201
10.5.4 数据库操作类 202
10.6 本章小结 206
第11章 数据库设计 208
从本章起将开始从实践的角度来谈PHP开发。在进行项目开发时,数据库的设计往往是第一步,因为程序离不开数据库,如果数据库没有设计好,后面的程序调试、运行都无从谈起。而且数据库的设计和需求分析是一脉相承的,需求分析做得越仔细,数据库的设计也就越精确和快速,后面甚至不需要做过多的调整。如果前面的需求分析不够完善,或者不够细致,那么做数据库设计时一般会感觉无从下手,有可能反复多次修改依然不太满意。需求分析是思路上的一种总体规划,而数据库从某种意义上可以说是程序逻辑上的一种规划。
11.1 为什么要进行数据库设计 209
11.2 数据库设计思想 210
11.2.1 数据库设计理念 210
11.2.2 数据库的逻辑设计 211
11.3 MySQL数据库的字段类型 213
11.4 数据库的物理设计 215
11.4.1 fy_articles表(文章) 215
11.4.2 fy_attachments表(附件) 216
11.4.3 fy_categories表(文章分类) 217
11.4.4 fy_comments表(文章评论) 218
11.4.5 fy_links表(友情链接) 218
11.4.6 fy_search表(前台搜索记录) 219
11.4.7 fy_sessions表(后台登录session) 219
11.4.8 fy_settings表(系统设置) 220
11.4.9 fy_statistics表(站内统计) 220
11.4.10 fy_tags表(文章标签) 220
11.4.11 fy_users表(后台账号) 221
11.5 数据库存储优化 222
11.5.1 数据库设计过程中的优化 222
11.5.2 查询过程中的优化 222
11.5.3 其他有关的优化 223
11.6 MySQL数据库的查询技巧 223
11.6.1 联合查询 223
11.6.2 IN(…)查询语法 225
11.7 MySQL的存储过程、触发器和视图 227
11.7.1 存储过程 228
11.7.2 触发器 229
11.7.3 视图 229
11.8 本章小结 230
第12章 项目核心功能的实现 232
前一章中详细讲解了数据库设计技巧,数据库设计是项目开发过程中一个重要组成部分。数据库设计完成之后,就可以开始编码任务了。编码的目的当然是为了实现程序的功能,满足客户的需求。本章将以FYblog项目为实例,一步步讲解项目中各功能模块是如何实现的。
12.1 公共函数与类 233
12.1.1 组织目录结构 233
12.1.2 函数库 233
12.1.3 缓存技术 239
12.2 前台文章功能 242
12.2.1 如何显示文章列表 242
12.2.2 博客系统日历 249
12.2.3 模糊搜索的原理 253
12.3 用户评论功能 255
12.3.1 文章评论的查询与显示 255
12.3.2 插入评论表情 260
12.3.3 评论的提交与过滤 262
12.3.4 验证码技术 267
12.4 站内数据统计功能 270
12.5 本章小结 272
第13章 附件上传与图片处理 273
在FYblog系统中,附件上传是在后台进行的,本来这些知识应该在后面的章节中进行讲解。但是,前台也涉及比较多的附件处理,因此,本章将详细讲解附件上传与图片处理。本章中涉及的技术是很重要的。
13.1 附件上传 274
13.1.1 多文件上传 274
13.1.2 上传的实现 275
13.2 附件调用 279
13.2.1 数据系列化与反系列化 279
13.2.2 附件调用 280
13.3 图像生成缩略图 283
13.3.1 计算缩略图尺寸 283
13.3.2 生成图像 284
13.4 图像生成水印 287
13.4.1 生成水印 287
13.4.2 创建图像文件 289
13.5 博客相册功能 290
13.5.1 图片列表的实现 290
13.5.2 图片的浏览 292
13.6 本章小结 294
第14章 登录验证与权限系统 296
登录验证是指网站后台的访问权限验证,而权限系统是指用户组权限划分,二者是不同的两个概念。登录验证的作用就不必多说了,网站后台绝对不允许任何人访问到。而权限系统的目的是将用户按照权限高低划分不同的等级,不同的等级具有不同的操作权限。权限系统不仅仅限于后台,譬如一个论坛,前台就得有权限划分,一般有版主、超级版主、管理员、超级管理员、游客、正式注册会员等不同等级。
14.1 基于cookies和数据库的登录验证 297
14.1.1 判断登录状态 297
14.1.2 登录验证 299
14.2 基于session的登录验证 303
14.3 权限系统设计 306
14.4 本章小结 308
第15章 后台管理模块 309
前面几章介绍了FYblog的一些基本功能,如文章显示、附件处理、登录验证等,这些基本上都是前台功能。实际上FYblog系统后台有着比较强大的功能,涉及文章管理、附件处理、评论管理、模板编辑、数据备份、日志管理等各个方面。而这些功能有很强的实用性,在实际的项目中是随处可见的,因此本章将以FYblog系统为实例,逐一介绍PHP项目中各种后台功能的实现技巧。
15.1 文章管理模块 310
15.1.1 模板article.dll 310
15.1.2 文章列表及文章搜索 319
15.1.3 添加文章 322
15.1.4 FCKeditor编辑器的配置 326
15.1.5 批量移动、删除文章 327
15.2 模板管理模块 331
15.2.1 程序模块template.php 331
15.2.2 模板template.dll 333
15.3 评论管理模块 334
15.3.1 设置评论可见状态 334
15.3.2 批量处理评论 335
15.4 友情链接管理模块 337
15.4.1 添加友情链接 337
15.4.2 更新友情链接 339
15.4.3 显示友情链接列表 339
15.5 数据管理模块 340
15.5.1 修复数据库 340
15.5.2 备份数据库 343
15.5.3 sqldumptable函数详解 345
15.5.4 导入RSS数据 349
15.6 日志管理模块 352
15.6.1 后台操作记录 352
15.6.2 后台登录记录 354
15.6.3 数据库出错记录 355
15.6.4 日志的删除 356
15.6.5 日志的读取 358
15.6.6 前台搜索记录 360
15.7 本章小结 361
第16章 安全部署及优化 363
谈到Web程序开发,就不能不谈到Web安全。Web安全可以简单地理解为网站安全,它是网络安全领域里面的一个重要组成部分。Web程序存在的安全问题,直接危及管理后台、数据库、服务器的安全,甚至威胁到整个内部网络的安全。一旦黑客发现了Web漏洞的利用方法,就可以突破程序的安全防线,非法进入后台,查看数据库里的机密数据(如会员资料等)。而且不仅仅如此,黑客还可以上传脚本后门(通常称作webshell),利用webshell可以完全控制网站,可以下载网站源代码,还可以结合一些系统漏洞和系统的安全设置问题来提升权限。
16.1 环境设置与程序安全 364
16.1.1 设置PHP安全模式 364
16.1.2 设置脚本访问目录 367
16.1.3 设置禁用函数 367
16.1.4 设置register_globals 368
16.1.5 设置magic_quotes_gpc 369
16.1.6 设置报错信息 374
16.1.7 allow_url_fopen函数 375
16.2 防范注入漏洞 376
16.2.1 注入漏洞实例 377
16.2.2 注入攻击的原理 378
16.2.3 注入漏洞的防范 382
16.3 防范文件包含漏洞 384
16.3.1 远程文件包含漏洞的原理 384
16.3.2 远程文件包含漏洞的防范 385
16.4 防范CC攻击 386
16.4.1 数据库设计 387
16.4.2 程序设计 388
16.5 变量初始化 390
16.6 防范跨站攻击、灌水、广告 392
16.6.1 防范技巧 392
16.6.2 跨站攻击的危害 397
16.7 本章小结 400
第四篇 使用Ajax改善用户体验
第17章 Ajax概念与原理 402
Ajax理念的出现,揭开了无刷新更新页面时代的序幕,并有代替传统Web开发中采用表单提交方式来更新Web页面的趋势。Ajax是具有变革性的,它使开发者得以摆脱原有单调的开发模式,从而开发出更易用、交互性更强的Web应用程序。目前,Ajax的一些成功应用有:Google主页、Google Suggest、Google Maps、Gmail等,无论在视觉效果还是易用性上都给人带来强烈的冲击力。因此,Ajax的出现具有里程碑式的意义,并在短时间内成为Web开发领域炙手可热的技术。而JavaScript是Ajax的核心技术之一,在Ajax技术中起着不可替代的作用。本章将利用有限的篇幅,力求向读者展示Ajax的风采,以及JavaScript在Ajax中所扮演的重要角色。
17.1 什么是Ajax 403
17.1.1 Ajax的定义 403
17.1.2 Ajax的诞生与发展 403
17.2 为什么需要Ajax 404
17.2.1 传统的Web框架 404
17.2.2 Ajax技术框架 405
17.2.3 Ajax的优势 406
17.3 Ajax核心技术 407
17.3.1 JavaScript 407
17.3.2 XMLHttpRequest 408
17.3.3 DOM 408
17.3.4 XML 408
17.4 Ajax应用实例 409
17.4.1 Google主页 409
17.4.2 Google Maps 409
17.5 Ajax应用场景 411
17.5.1 数据验证 411
17.5.2 按需读取数据 411
17.5.3 自动实时更新页面 412
17.6 使用Ajax 412
17.6.1 创建XMLHttpRequest对象 413
17.6.2 向服务器发送请求 413
17.6.3 处理服务器响应 414
17.6.4 完整的Ajax框架 414
17.6.5 开山之作:“Hello,Ajax”程序 416
17.6.6 注册信息实时验证实例 418
17.6.7 级联目录实例 425
17.6.8 自动实时更新页面 428
17.6.9 小结 431
17.7 Ajax的不足之处 431
17.8 本章小结 432
第18章 Ajax无刷新静态分页 433
在上一章中对Ajax与服务器通信、发送请求和处理响应等做了详细介绍。理解Ajax技术的关键是理解XMLHttpRequest对象,熟悉文档对象模型DOM。
实际上,Ajax的用途非常广泛,在程序开发过程中,翻页技术的使用是非常普遍的,本章通过讲解Ajax静态翻页技术,帮助读者通过实际的案例理解Ajax的应用技巧。本章实例都在第12章建立的FYblog项目的基础上创建。
18.1 分页技术概况 434
18.1.1 传统的分页技术 434
18.1.2 Ajax静态分页技术 434
18.2 分页技术的原理 435
18.2.1 查询的技巧 435
18.2.2 翻页函数 436
18.3 Ajax与PHP之间的参数传递 438
18.3.1 准备工作 438
18.3.2 参数传递 440
18.4 无比流畅的静态翻页 441
18.5 滑动翻页技术 444
18.5.1 onMouseOver事件 444
18.5.2 滑动翻页 445
18.6 本章小结 447
第19章 Ajax与表单处理 448
前面两章中对Ajax的一些应用做了讲解,其中主要讲解了Ajax的GET方式的请求。从本章起将介绍POST方式的请求。表单在Web程序中极为常见,而且起着非常重要的作用。表单处理有很多细节问题,比如表单验证、密码强度实时检测等。Ajax技术的出现使得这些细节问题处理起来更方便,更加人性化。因此,本章将以表单为出发点,介绍Ajax技术在表单处理方面的一些技巧,以及POST方式发送请求的技巧。本章大部分地方以FYblog中的有关代码为例子。
19.1 Ajax无刷新提交表单 449
19.1.1 传统的表单提交方式 449
19.1.2 Ajax提交表单 452
19.2 Ajax与表单验证 456
19.2.1 基于客户端的表单验证 456
19.2.2 基于服务器端的表单验证 460
19.2.3 两种表单验证方式的比较 465
19.3 表单实时检测技术 466
19.3.1 密码强度检测 466
19.3.2 表单实时检测 470
19.4 本章小结 474
第20章 Ajax定时更新技术 476
本章将要介绍的是Ajax又一个很实用的功能,即Ajax定时更新技术。所谓定时更新技术,简单地说,是指采用Ajax技术定时地发出请求,或者定时地更新页面某一节点的数据。此处谈到的定时是指每间隔一定的时间更新一次或者指定更新的次数。严格地说,这种技术的实现基础是JavaScript的定时器,然而Ajax技术使得这种技术更有价值,所以这种技术在很多情况下会用到。
Ajax定时更新技术的作用很大,可以用在动态显示时间、随机显示新闻、抽奖程序、发帖自动保存草稿、聊天室定期刷新页面等场合。当然,不仅仅限于这些,掌握了Ajax定时更新技术,还可以实现更多的效果,做更多的事情。因此,本章将系统地介绍Ajax定时更新技术。
20.1 Ajax定时更新技术的原理 477
20.1.1 定时更新的实现 477
20.1.2 setInterval与setTimeout用法 478
20.2 Ajax抽奖程序 481
20.2.1 需求分析 482
20.2.2 程序设计 483
20.3 Ajax自动保存草稿功能 489
20.3.1 Ajax与Cookies 490
20.3.2 使用Cookies保存数据 492
20.4 本章小结 493
第21章 Ajax打造人性化的搜索 495
用过Google搜索的人应该都会发现,它具有自动完成功能。当用户输入一个关键字之后,输入框会列出与这个关键字有关的关键词,并且显示每个关键词有多少条搜索记录。这种自动完成功能是一个新技术,它使得搜索显得非常人性化和智能化,可以为用户提供方便,在一定程度上改善了用户体验。然而,搜索不仅仅Google有,现在各种网站上基本都有站内搜索入口,比如各种论坛、博客系统、文章系统等。
21.1 Ajax无刷新搜索 496
21.1.1 数据库设计 496
21.1.2 插入数据 497
21.1.3 表单处理 499
21.1.4 无刷新搜索 502
21.1.5 Ajax搜索的分页 504
21.2 Ajax自动完成功能 505
21.2.1 Autocomplete框架1.4.3介绍 505
21.2.2 建立关键词数据库 506
21.2.3 调用JavaScript框架 507
21.2.4 用Ajax实现自动完成功能 508
21.3 本章小结 512
第22章 Ajax与拖动层 514
随着Ajax技术的不断成熟,用户体验方面的创意也是越来越丰富。网络上有许多开源的JavaScrpt框架,这些框架与Ajax结合可以实现非常复杂的效果,比如弹出层、Ajax拖拽提交、淡入淡出的菜单,以及一些更复杂的UI创意。当然,这些效果也并不是都用到了Ajax技术,有些是完全的JavaScrpt特效。常见的JavaScrpt框架有很多,比如基于Prototype的script.aculo.us、YahooUI,以及JQuery的各种插件等。这些JavaScrpt框架可以在很大的程度上改善用户体验,使得Web程序更具有创意和表现力,更有特色和吸引力,再加上Ajax的配合,Web程序已经与传统的表现方式有着本质的区别。
22.1 JavaScrpt实现层的弹出与拖动 515
22.1.1 设置弹出层的属性 515
22.1.2 设置弹出层的样式 519
22.1.3 层的弹出 520
22.1.4 层的拖动 523
22.2 Ajax与弹出层 525
22.2.1 首页模板index.html 525
22.2.2 定义弹出窗口属性(show.js) 526
22.2.3 响应Ajax请求(add.php) 527
22.2.4 后台处理(do.php) 530
22.2.5 Ajax与弹出层交互 531
22.3 定时弹出窗口 533
22.3.1 个性化的弹出窗口 533
22.3.2 定时弹出窗口 535
22.4 本章小结 536
第23章 Ajax改善用户体验综合篇 538
前面几章中介绍了Ajax技术的一些常见用法,但是Ajax技术的用法很多,而且很多时候体现在一些细节上。对于Ajax技术的应用很难都一一介绍到,但是如果举一反三,能够灵活贯通,应用Ajax技术时就可以随心所欲了。凡是适合使用Ajax的地方,就可以考虑使用它。网络上对于Ajax的讨论和研究实在太多了,这在一定程度上增加了Ajax的神秘性和复杂性,实际上,Ajax并不神秘。本章将结合具体的实例,再介绍Ajax技术的几种用法,作为对前面章节的一些补充和总结。在本章的例子中,实现的功能并不是最重要的,其思路及实现过程才是值得注意的。
23.1 可以动态编辑的文本 539
23.1.1 动态编辑文本的实现 539
23.1.2 静态模板demo1.html 542
23.1.3 处理Ajax请求 545
23.2 Ajax动态联动下拉框 547
23.2.1 前台程序demo2.html 547
23.2.2 后台处理server.php 549
23.2.3 数据库设计 550
23.2.4 Ajax动态联动下拉框效果 551
23.3 Ajax升序、降序排列数据 552
23.3.1 数据库设计 553
23.3.2 前台程序设计 553
23.3.3 后台程序设计 554
23.3.4 Ajax升序、降序的效果 556
23.4 本章小结 557
第24章 Ajax动态更新页面数据 559
在FYblog系统中,前台部分用到了相当多的Ajax技术,使得前台有且仅有一个静态页面来完成用户交互及数据传输。Ajax的重要用途之一是动态更新页面数据,即在不刷新、不跳转的情况下,更新页面局部的内容。本章将结合FYblog系统,以实例的形式介绍Ajax动态更新页面数据的一些技巧。值得注意的是,理解Ajax如何与PHP进行交互也是很关键的。
24.1 AJAXRequest 0.7 560
24.2 Ajax与服务器通信,发送请求和处理响应 561
24.2.1 调用Ajax框架 561
24.2.2 Ajax发送请求 564
24.2.3 处理Ajax请求 565
24.3 Ajax无刷新更新数据 572
24.3.1 触发Ajax请求 572
24.3.2 动态更新数据 573
24.4 本章小结... 574
第1章 开发环境配置 2
在开始学习PHP之前,需要搭建开发环境。本章将结合实际项目经验来谈在Windows环境下配置Apache+PHP+ MySQL+ phpMyAdmin,在Windows环境下配置IIS+PHP+MySQL+ phpMyAdmin,以及在Linux环境下配置Apache+PHP+ MySQL+ phpMyAdmin等。
1.1 在Windows环境下配置IIS+PHP+MySQL+phpMyAdmin 3
1.1.1 安装IIS 3
1.1.2 安装PHP 4
1.1.3 PHP设置 5
1.1.4 安装MySQL 9
1.1.5 安装Zend Optimizer 10
1.1.6 安装phpMyAdmin 11
1.2 在Windows环境下配置Apache+PHP+MySQL+phpMyAdmin 13
1.3 LAMP平台的搭建 15
1.3.1 安装Apache 15
1.3.2 安装MySQL 16
1.3.3 安装PHP 18
1.3.4 搭建快速开发平台 18
1.4 本章小结 19
第2章 PHP语法 20
前面的章节讲解了PHP的运行平台的搭建和配置。本章将在这些知识的基础上讲解编程中的一些概念和基本语法。本章的内容包括PHP语法的格式、注释、变量、运算符、数据类型、类型强制转换等知识。通过对本章的学习,可以对该语言有一个大致的了解,编写一些简单程序。
2.1 PHP入门 21
2.1.1 第一个PHP网页 21
2.1.2 网页中嵌入PHP程序 22
2.1.3 语法格式 22
2.1.4 PHP中的注释 23
2.2 PHP的常量与变量 24
2.2.1 什么是变量和常量 24
2.2.2 定义变量 25
2.2.3 定义常量 26
2.2.4 变量的作用域 27
2.2.5 变量的输出 29
2.2.6 PHP的表单变量 29
2.2.7 PHP的环境变量 31
2.2.8 PHP的系统常量 33
2.3 PHP的运算符 34
2.3.1 算术运算符 34
2.3.2 条件运算符与逻辑运算符 35
2.3.3 字符串运算符 37
2.3.4 PHP的运算优先级 37
2.4 PHP的数据类型 38
2.4.1 常用数据类型 39
2.4.2 特殊的数据类型 39
2.4.3 数据类型的查看和验证 40
2.5 PHP数据类型的转换 41
2.5.1 转换成整型 41
2.5.2 转换成字符串型 42
2.5.3 转换成浮点型 42
2.5.4 转换成布尔型 43
2.5.5 强制类型转换 44
2.6 实例 45
2.6.1 静态变量使用实例 45
2.6.2 数学运算符与优先级实例 46
2.7 小结 46
第3章 PHP的常用语句 47
本章将重点讲解PHP的语句。一些运算符和表达式,后面用分号隔开,能够完成一定的逻辑功能,就构成一个语句。复杂的程序都是由简单的语句构成的。流程控制语句是本章的重点,程序中复杂的功能都是通过流程控制语句来完成的。通过本章的学习,读者需要掌握流程控制语句、常用的表达式、文件包含等PHP编程技巧。
3.1 流程控制语句 48
3.1.1 if条件语句 48
3.1.2 switch条件语句 50
3.1.3 for循环语句 52
3.1.4 while循环语句 54
3.1.5 do while循环语句 55
3.1.6 转移控制语句:continue 56
3.1.7 转移控制语句:break 57
3.1.8 转移控制语句:return 57
3.2 流程控制语句实例 58
3.2.1 实例:输出表格 58
3.2.2 实例:输出九九乘法口诀表 59
3.2.3 实例:解一元二次方程 60
3.3 文件包含 62
3.3.1 使用require和require_once语句包含文件 62
3.3.2 使用include和include_once语句包含文件 65
3.4 小结 66
第4章 函数 67
PHP程序中会调用各种函数,函数实现了程序中的各种功能,也实现了代码的结构化。函数分为系统函数和自定义函数两种。系统函数是PHP自带的函数,系统函数无法实现的功能需要自己编写自定义函数。本章重点介绍函数的调用和自定义函数的编写。
4.1 函数的定义与调用 68
4.1.1 函数的调用 68
4.1.2 自定义函数 69
4.1.3 自定义函数实例 70
4.2 数学函数 71
4.2.1 rand与srand产生随机数 71
4.2.2 随机数生成实例:生成数字代码 72
4.2.3 数学函数 73
4.3 时间函数 74
4.3.1 获得日期时间信息函数getdate 74
4.3.2 获得当前时间函数gettimeofday 76
4.3.3 日期验证函数checkdate 77
4.3.4 格式化本地日期时间函数date 78
4.3.5 获得本地化时间戳函数mktime 80
4.4 小结 81
第5章 数组 82
数组就是一组具有相同数据类型的变量的集合。在程序中调用这些变量时,使用相同的变量名和键。数组中的每一个变量称作数组的一个元素。使用数组,可以用循环语句来方便地处理程序中大量的数据。本章将讲解数组相关的函数和编程。
5.1 数组的操作 83
5.1.1 数组的理解 83
5.1.2 数组的建立 84
5.1.3 数组的访问 86
5.1.4 数组的遍历 87
5.1.5 数组的索引与键值操作技巧 89
5.2 数组的常用函数 92
5.2.1 使用sort和rsort对数组排序 92
5.2.2 使用asort和arsort对数组排序 93
5.2.3 使用array_multisort对数组进行排序 94
5.2.4 数组与堆栈 95
5.2.5 使用array_shift和array_unshift函数访问数组 96
5.2.6 数组查找函数array_search 97
5.2.7 其他数组函数 97
5.3 数组应用实例 98
5.3.1 实例:数组的排序与访问 99
5.3.2 实例:数组的访问 100
5.4 小结 101
第6章 字符串 102
在实际编程时,常常需要进行字符串处理。PHP提供了非常丰富的字符串处理函数,而正则表达式的使用,可以更加灵活地对字符串进行模糊处理。使用正则表达式对于处理复杂的字符串非常便利。本章讲解字符串的常用操作和正则表达式的使用。
6.1 字符串的理解 103
6.2 字符串的显示与格式化 103
6.2.1 echo和print输出字符串 103
6.2.2 sprintf字符串格式化输出 104
6.3 字符串的常用操作 105
6.3.1 字符串重复函数str_repeat 105
6.3.2 字符串替换函数str_replace 106
6.3.3 字符串分解操作函数str_split 107
6.3.4 字符串分解成单词函数str_word_count 108
6.3.5 字符串查找操作函数strstr 109
6.3.6 字符串的长度函数strlen 110
6.3.7 获得字符串函数substr 110
6.4 小结 111
第二篇 PHP与MySQL数据库编程
第7章 MySQL数据库 114
Linux+Apache+MySQL+PHP方案是一个非常理想的网站解决方案。MySQL数据库是一个功能强大的数据库管理系统,在PHP网站中有着非常优秀的表现。在网站中,PHP程序是将网站的内容存储在MySQL数据库中。用户在访问网页时,查询数据库内容再生成HTML网页发送到浏览器。本章讲述MySQL的管理、SQL语句等数据库操作基础知识。
7.1 数据库的启动与关闭 115
7.1.1 服务管理方式启动与关闭MySql服务 115
7.1.2 命令行方式管理MySql服务 116
7.2 phpMyAdmin管理MySQL数据库 116
7.2.1 登录和使用phpMyAdmin 117
7.2.2 添加和删除数据库 118
7.3 在数据库中创建表 119
7.3.1 数据表的理解 119
7.3.2 MySQL的数据类型 119
7.3.3 建立数据库模型 120
7.3.4 在phpMyAdmin中创建表 120
7.4 用phpMyAdmin管理表中的数据 122
7.4.1 phpMyAdmin添加数据 122
7.4.2 phpMyAdmin查看数据 123
7.5 权限管理 123
7.5.1 添加和删除用户 124
7.5.2 设置数据库用户的权限 125
7.6 MySQL命令行管理MySQL数据库 126
7.6.1 登录MySQL命令行 126
7.6.2 新建与删除数据库 126
7.6.3 新建或删除数据库表 127
7.7 用SQL语句访问MySQL数据库 130
7.7.1 插入数据 130
7.7.2 数据查询 131
7.7.3 数据更新 136
7.7.4 数据删除 136
7.7.5 查询数据的分组与处理 137
7.8 MySQL的内置函数 139
7.9 小结 140
第8章 PHP和MySQL的应用 141
在网站项目中,网站的数据是存放在数据库中的。PHP+MySQL是一个非常好的网站解决方案,具有非常好的性能和安全性。在PHP网站中,程序常常进行数据库访问,数据库访问是通过SQL语句完成的。本章讲解PHP对MySQL数据库进行连接、表单使用、数据查询等方面的内容。本章中使用的数据库,是上一章建立的“db_stu”数据库。在进行本章学习之前,需要按照上一章的内容建立数据库。
8.1 MySQL的连接和选择数据库 142
8.1.1 连接到MySQL服务器 142
8.1.2 选择数据库 143
8.1.3 网站配置文件 144
8.2 数据库的查询操作 145
8.2.1 执行SQL语句 145
8.2.2 获取查询结果的记录数 146
8.2.3 获取查询结果的某一条记录 147
8.2.4 逐行获取记录集中的每一行数据 148
8.3 数据库访问实例 151
8.3.1 院系的添加 151
8.3.2 院系管理列表 152
8.3.3 院系的删除 153
8.3.4 院系编辑网页 153
8.3.5 添加班级 155
8.3.6 数据分页显示 156
8.3.7 数据列表的排序 159
8.4 小结 161
第三篇 商用Blog系统开发详解
第9章 项目简介及功能演示 164
本章将从一个实际的项目谈起,这个项目是一个基于Div+CSS+Ajax+PHP+ MySQL+Smarty的博客系统,为了方便说明,此处把它命名为FYblog。在以后的章节中,将以它为实例逐步详细、深入地讲解PHP项目开发,讲解流行的Ajax技术等。
本章介绍FYblog的主要功能和特点,它是学习后面章节的基础。FYblog是一个个性鲜明、技术含量较高的系统,然而系统本身并不是学习的主要目的,其中的思路、程序逻辑、实现方法、原理才是最重要的。“千里之行,始于足下”。因此,一个好的学习态度是成功的开始。
9.1 项目简介 165
9.1.1 项目优点 166
9.1.2 项目不足 166
9.2 前台体验 166
9.2.1 前台首页 166
9.2.2 文章显示与评论 167
9.2.3 标签、搜索、日历等模块.. 168
9.2.4 导航链接 169
9.3 后台功能 170
9.3.1 登录界面 171
9.3.2 “文章管理”模块 172
9.3.3 “模板管理”模块 173
9.3.4 “分类管理”模块 173
9.3.5 “评论管理”模块 173
9.3.6 “附件管理”模块 174
9.3.7 “链接管理”模块 175
9.3.8 “用户管理”模块 175
9.3.9 “系统维护”模块 176
9.3.10 “数据管理”模块 176
9.3.11 “日志管理”模块 177
9.4 程序安装与配置 178
9.4.1 phpMyAdmin导入SQL文件 178
9.4.2 通过install.php安装 180
9.5 本章小结 187
第10章 系统分析与总体设计 188
在前面章节中对平台搭建进行了详细的介绍,平台搭建与环境配置是项目开发的基础,合理的配置可以提高工作效率,有助于程序的调试与编译。环境配置好之后,就可以进行项目实践了。从本章起,将逐步介绍项目开发的流程。为了讲解方便,本章及以后章节中统一基于Windows 2003下的Apache 2.2.4+MySQL 5.0.37+PHP 5.21+phpMyAdmin 2.10环境进行介绍。
10.1 需求分析 189
10.1.1 什么是需求分析 189
10.1.2 FYblog需求分析 190
10.2 了解Web 2.0 191
10.2.1 什么是Web 2.0 191
10.2.2 Web 2.0的特点 193
10.2.3 Web 2.0的条件 194
10.3 基于Ajax的设计思路 194
10.3.1 什么是Ajax技术 194
10.3.2 Ajax技术的好处 195
10.4 基于Div+CSS的网站构架 196
10.4.1 什么是Web标准 196
10.4.2 Web标准有关代码的规范 197
10.4.3 基于Div+CSS布局的好处 198
10.5 面向对象的程序设计思想 199
10.5.1 为什么要学习面向对象 199
10.5.2 类、对象和方法 199
10.5.3 FYblog中的面向对象 201
10.5.4 数据库操作类 202
10.6 本章小结 206
第11章 数据库设计 208
从本章起将开始从实践的角度来谈PHP开发。在进行项目开发时,数据库的设计往往是第一步,因为程序离不开数据库,如果数据库没有设计好,后面的程序调试、运行都无从谈起。而且数据库的设计和需求分析是一脉相承的,需求分析做得越仔细,数据库的设计也就越精确和快速,后面甚至不需要做过多的调整。如果前面的需求分析不够完善,或者不够细致,那么做数据库设计时一般会感觉无从下手,有可能反复多次修改依然不太满意。需求分析是思路上的一种总体规划,而数据库从某种意义上可以说是程序逻辑上的一种规划。
11.1 为什么要进行数据库设计 209
11.2 数据库设计思想 210
11.2.1 数据库设计理念 210
11.2.2 数据库的逻辑设计 211
11.3 MySQL数据库的字段类型 213
11.4 数据库的物理设计 215
11.4.1 fy_articles表(文章) 215
11.4.2 fy_attachments表(附件) 216
11.4.3 fy_categories表(文章分类) 217
11.4.4 fy_comments表(文章评论) 218
11.4.5 fy_links表(友情链接) 218
11.4.6 fy_search表(前台搜索记录) 219
11.4.7 fy_sessions表(后台登录session) 219
11.4.8 fy_settings表(系统设置) 220
11.4.9 fy_statistics表(站内统计) 220
11.4.10 fy_tags表(文章标签) 220
11.4.11 fy_users表(后台账号) 221
11.5 数据库存储优化 222
11.5.1 数据库设计过程中的优化 222
11.5.2 查询过程中的优化 222
11.5.3 其他有关的优化 223
11.6 MySQL数据库的查询技巧 223
11.6.1 联合查询 223
11.6.2 IN(…)查询语法 225
11.7 MySQL的存储过程、触发器和视图 227
11.7.1 存储过程 228
11.7.2 触发器 229
11.7.3 视图 229
11.8 本章小结 230
第12章 项目核心功能的实现 232
前一章中详细讲解了数据库设计技巧,数据库设计是项目开发过程中一个重要组成部分。数据库设计完成之后,就可以开始编码任务了。编码的目的当然是为了实现程序的功能,满足客户的需求。本章将以FYblog项目为实例,一步步讲解项目中各功能模块是如何实现的。
12.1 公共函数与类 233
12.1.1 组织目录结构 233
12.1.2 函数库 233
12.1.3 缓存技术 239
12.2 前台文章功能 242
12.2.1 如何显示文章列表 242
12.2.2 博客系统日历 249
12.2.3 模糊搜索的原理 253
12.3 用户评论功能 255
12.3.1 文章评论的查询与显示 255
12.3.2 插入评论表情 260
12.3.3 评论的提交与过滤 262
12.3.4 验证码技术 267
12.4 站内数据统计功能 270
12.5 本章小结 272
第13章 附件上传与图片处理 273
在FYblog系统中,附件上传是在后台进行的,本来这些知识应该在后面的章节中进行讲解。但是,前台也涉及比较多的附件处理,因此,本章将详细讲解附件上传与图片处理。本章中涉及的技术是很重要的。
13.1 附件上传 274
13.1.1 多文件上传 274
13.1.2 上传的实现 275
13.2 附件调用 279
13.2.1 数据系列化与反系列化 279
13.2.2 附件调用 280
13.3 图像生成缩略图 283
13.3.1 计算缩略图尺寸 283
13.3.2 生成图像 284
13.4 图像生成水印 287
13.4.1 生成水印 287
13.4.2 创建图像文件 289
13.5 博客相册功能 290
13.5.1 图片列表的实现 290
13.5.2 图片的浏览 292
13.6 本章小结 294
第14章 登录验证与权限系统 296
登录验证是指网站后台的访问权限验证,而权限系统是指用户组权限划分,二者是不同的两个概念。登录验证的作用就不必多说了,网站后台绝对不允许任何人访问到。而权限系统的目的是将用户按照权限高低划分不同的等级,不同的等级具有不同的操作权限。权限系统不仅仅限于后台,譬如一个论坛,前台就得有权限划分,一般有版主、超级版主、管理员、超级管理员、游客、正式注册会员等不同等级。
14.1 基于cookies和数据库的登录验证 297
14.1.1 判断登录状态 297
14.1.2 登录验证 299
14.2 基于session的登录验证 303
14.3 权限系统设计 306
14.4 本章小结 308
第15章 后台管理模块 309
前面几章介绍了FYblog的一些基本功能,如文章显示、附件处理、登录验证等,这些基本上都是前台功能。实际上FYblog系统后台有着比较强大的功能,涉及文章管理、附件处理、评论管理、模板编辑、数据备份、日志管理等各个方面。而这些功能有很强的实用性,在实际的项目中是随处可见的,因此本章将以FYblog系统为实例,逐一介绍PHP项目中各种后台功能的实现技巧。
15.1 文章管理模块 310
15.1.1 模板article.dll 310
15.1.2 文章列表及文章搜索 319
15.1.3 添加文章 322
15.1.4 FCKeditor编辑器的配置 326
15.1.5 批量移动、删除文章 327
15.2 模板管理模块 331
15.2.1 程序模块template.php 331
15.2.2 模板template.dll 333
15.3 评论管理模块 334
15.3.1 设置评论可见状态 334
15.3.2 批量处理评论 335
15.4 友情链接管理模块 337
15.4.1 添加友情链接 337
15.4.2 更新友情链接 339
15.4.3 显示友情链接列表 339
15.5 数据管理模块 340
15.5.1 修复数据库 340
15.5.2 备份数据库 343
15.5.3 sqldumptable函数详解 345
15.5.4 导入RSS数据 349
15.6 日志管理模块 352
15.6.1 后台操作记录 352
15.6.2 后台登录记录 354
15.6.3 数据库出错记录 355
15.6.4 日志的删除 356
15.6.5 日志的读取 358
15.6.6 前台搜索记录 360
15.7 本章小结 361
第16章 安全部署及优化 363
谈到Web程序开发,就不能不谈到Web安全。Web安全可以简单地理解为网站安全,它是网络安全领域里面的一个重要组成部分。Web程序存在的安全问题,直接危及管理后台、数据库、服务器的安全,甚至威胁到整个内部网络的安全。一旦黑客发现了Web漏洞的利用方法,就可以突破程序的安全防线,非法进入后台,查看数据库里的机密数据(如会员资料等)。而且不仅仅如此,黑客还可以上传脚本后门(通常称作webshell),利用webshell可以完全控制网站,可以下载网站源代码,还可以结合一些系统漏洞和系统的安全设置问题来提升权限。
16.1 环境设置与程序安全 364
16.1.1 设置PHP安全模式 364
16.1.2 设置脚本访问目录 367
16.1.3 设置禁用函数 367
16.1.4 设置register_globals 368
16.1.5 设置magic_quotes_gpc 369
16.1.6 设置报错信息 374
16.1.7 allow_url_fopen函数 375
16.2 防范注入漏洞 376
16.2.1 注入漏洞实例 377
16.2.2 注入攻击的原理 378
16.2.3 注入漏洞的防范 382
16.3 防范文件包含漏洞 384
16.3.1 远程文件包含漏洞的原理 384
16.3.2 远程文件包含漏洞的防范 385
16.4 防范CC攻击 386
16.4.1 数据库设计 387
16.4.2 程序设计 388
16.5 变量初始化 390
16.6 防范跨站攻击、灌水、广告 392
16.6.1 防范技巧 392
16.6.2 跨站攻击的危害 397
16.7 本章小结 400
第四篇 使用Ajax改善用户体验
第17章 Ajax概念与原理 402
Ajax理念的出现,揭开了无刷新更新页面时代的序幕,并有代替传统Web开发中采用表单提交方式来更新Web页面的趋势。Ajax是具有变革性的,它使开发者得以摆脱原有单调的开发模式,从而开发出更易用、交互性更强的Web应用程序。目前,Ajax的一些成功应用有:Google主页、Google Suggest、Google Maps、Gmail等,无论在视觉效果还是易用性上都给人带来强烈的冲击力。因此,Ajax的出现具有里程碑式的意义,并在短时间内成为Web开发领域炙手可热的技术。而JavaScript是Ajax的核心技术之一,在Ajax技术中起着不可替代的作用。本章将利用有限的篇幅,力求向读者展示Ajax的风采,以及JavaScript在Ajax中所扮演的重要角色。
17.1 什么是Ajax 403
17.1.1 Ajax的定义 403
17.1.2 Ajax的诞生与发展 403
17.2 为什么需要Ajax 404
17.2.1 传统的Web框架 404
17.2.2 Ajax技术框架 405
17.2.3 Ajax的优势 406
17.3 Ajax核心技术 407
17.3.1 JavaScript 407
17.3.2 XMLHttpRequest 408
17.3.3 DOM 408
17.3.4 XML 408
17.4 Ajax应用实例 409
17.4.1 Google主页 409
17.4.2 Google Maps 409
17.5 Ajax应用场景 411
17.5.1 数据验证 411
17.5.2 按需读取数据 411
17.5.3 自动实时更新页面 412
17.6 使用Ajax 412
17.6.1 创建XMLHttpRequest对象 413
17.6.2 向服务器发送请求 413
17.6.3 处理服务器响应 414
17.6.4 完整的Ajax框架 414
17.6.5 开山之作:“Hello,Ajax”程序 416
17.6.6 注册信息实时验证实例 418
17.6.7 级联目录实例 425
17.6.8 自动实时更新页面 428
17.6.9 小结 431
17.7 Ajax的不足之处 431
17.8 本章小结 432
第18章 Ajax无刷新静态分页 433
在上一章中对Ajax与服务器通信、发送请求和处理响应等做了详细介绍。理解Ajax技术的关键是理解XMLHttpRequest对象,熟悉文档对象模型DOM。
实际上,Ajax的用途非常广泛,在程序开发过程中,翻页技术的使用是非常普遍的,本章通过讲解Ajax静态翻页技术,帮助读者通过实际的案例理解Ajax的应用技巧。本章实例都在第12章建立的FYblog项目的基础上创建。
18.1 分页技术概况 434
18.1.1 传统的分页技术 434
18.1.2 Ajax静态分页技术 434
18.2 分页技术的原理 435
18.2.1 查询的技巧 435
18.2.2 翻页函数 436
18.3 Ajax与PHP之间的参数传递 438
18.3.1 准备工作 438
18.3.2 参数传递 440
18.4 无比流畅的静态翻页 441
18.5 滑动翻页技术 444
18.5.1 onMouseOver事件 444
18.5.2 滑动翻页 445
18.6 本章小结 447
第19章 Ajax与表单处理 448
前面两章中对Ajax的一些应用做了讲解,其中主要讲解了Ajax的GET方式的请求。从本章起将介绍POST方式的请求。表单在Web程序中极为常见,而且起着非常重要的作用。表单处理有很多细节问题,比如表单验证、密码强度实时检测等。Ajax技术的出现使得这些细节问题处理起来更方便,更加人性化。因此,本章将以表单为出发点,介绍Ajax技术在表单处理方面的一些技巧,以及POST方式发送请求的技巧。本章大部分地方以FYblog中的有关代码为例子。
19.1 Ajax无刷新提交表单 449
19.1.1 传统的表单提交方式 449
19.1.2 Ajax提交表单 452
19.2 Ajax与表单验证 456
19.2.1 基于客户端的表单验证 456
19.2.2 基于服务器端的表单验证 460
19.2.3 两种表单验证方式的比较 465
19.3 表单实时检测技术 466
19.3.1 密码强度检测 466
19.3.2 表单实时检测 470
19.4 本章小结 474
第20章 Ajax定时更新技术 476
本章将要介绍的是Ajax又一个很实用的功能,即Ajax定时更新技术。所谓定时更新技术,简单地说,是指采用Ajax技术定时地发出请求,或者定时地更新页面某一节点的数据。此处谈到的定时是指每间隔一定的时间更新一次或者指定更新的次数。严格地说,这种技术的实现基础是JavaScript的定时器,然而Ajax技术使得这种技术更有价值,所以这种技术在很多情况下会用到。
Ajax定时更新技术的作用很大,可以用在动态显示时间、随机显示新闻、抽奖程序、发帖自动保存草稿、聊天室定期刷新页面等场合。当然,不仅仅限于这些,掌握了Ajax定时更新技术,还可以实现更多的效果,做更多的事情。因此,本章将系统地介绍Ajax定时更新技术。
20.1 Ajax定时更新技术的原理 477
20.1.1 定时更新的实现 477
20.1.2 setInterval与setTimeout用法 478
20.2 Ajax抽奖程序 481
20.2.1 需求分析 482
20.2.2 程序设计 483
20.3 Ajax自动保存草稿功能 489
20.3.1 Ajax与Cookies 490
20.3.2 使用Cookies保存数据 492
20.4 本章小结 493
第21章 Ajax打造人性化的搜索 495
用过Google搜索的人应该都会发现,它具有自动完成功能。当用户输入一个关键字之后,输入框会列出与这个关键字有关的关键词,并且显示每个关键词有多少条搜索记录。这种自动完成功能是一个新技术,它使得搜索显得非常人性化和智能化,可以为用户提供方便,在一定程度上改善了用户体验。然而,搜索不仅仅Google有,现在各种网站上基本都有站内搜索入口,比如各种论坛、博客系统、文章系统等。
21.1 Ajax无刷新搜索 496
21.1.1 数据库设计 496
21.1.2 插入数据 497
21.1.3 表单处理 499
21.1.4 无刷新搜索 502
21.1.5 Ajax搜索的分页 504
21.2 Ajax自动完成功能 505
21.2.1 Autocomplete框架1.4.3介绍 505
21.2.2 建立关键词数据库 506
21.2.3 调用JavaScript框架 507
21.2.4 用Ajax实现自动完成功能 508
21.3 本章小结 512
第22章 Ajax与拖动层 514
随着Ajax技术的不断成熟,用户体验方面的创意也是越来越丰富。网络上有许多开源的JavaScrpt框架,这些框架与Ajax结合可以实现非常复杂的效果,比如弹出层、Ajax拖拽提交、淡入淡出的菜单,以及一些更复杂的UI创意。当然,这些效果也并不是都用到了Ajax技术,有些是完全的JavaScrpt特效。常见的JavaScrpt框架有很多,比如基于Prototype的script.aculo.us、YahooUI,以及JQuery的各种插件等。这些JavaScrpt框架可以在很大的程度上改善用户体验,使得Web程序更具有创意和表现力,更有特色和吸引力,再加上Ajax的配合,Web程序已经与传统的表现方式有着本质的区别。
22.1 JavaScrpt实现层的弹出与拖动 515
22.1.1 设置弹出层的属性 515
22.1.2 设置弹出层的样式 519
22.1.3 层的弹出 520
22.1.4 层的拖动 523
22.2 Ajax与弹出层 525
22.2.1 首页模板index.html 525
22.2.2 定义弹出窗口属性(show.js) 526
22.2.3 响应Ajax请求(add.php) 527
22.2.4 后台处理(do.php) 530
22.2.5 Ajax与弹出层交互 531
22.3 定时弹出窗口 533
22.3.1 个性化的弹出窗口 533
22.3.2 定时弹出窗口 535
22.4 本章小结 536
第23章 Ajax改善用户体验综合篇 538
前面几章中介绍了Ajax技术的一些常见用法,但是Ajax技术的用法很多,而且很多时候体现在一些细节上。对于Ajax技术的应用很难都一一介绍到,但是如果举一反三,能够灵活贯通,应用Ajax技术时就可以随心所欲了。凡是适合使用Ajax的地方,就可以考虑使用它。网络上对于Ajax的讨论和研究实在太多了,这在一定程度上增加了Ajax的神秘性和复杂性,实际上,Ajax并不神秘。本章将结合具体的实例,再介绍Ajax技术的几种用法,作为对前面章节的一些补充和总结。在本章的例子中,实现的功能并不是最重要的,其思路及实现过程才是值得注意的。
23.1 可以动态编辑的文本 539
23.1.1 动态编辑文本的实现 539
23.1.2 静态模板demo1.html 542
23.1.3 处理Ajax请求 545
23.2 Ajax动态联动下拉框 547
23.2.1 前台程序demo2.html 547
23.2.2 后台处理server.php 549
23.2.3 数据库设计 550
23.2.4 Ajax动态联动下拉框效果 551
23.3 Ajax升序、降序排列数据 552
23.3.1 数据库设计 553
23.3.2 前台程序设计 553
23.3.3 后台程序设计 554
23.3.4 Ajax升序、降序的效果 556
23.4 本章小结 557
第24章 Ajax动态更新页面数据 559
在FYblog系统中,前台部分用到了相当多的Ajax技术,使得前台有且仅有一个静态页面来完成用户交互及数据传输。Ajax的重要用途之一是动态更新页面数据,即在不刷新、不跳转的情况下,更新页面局部的内容。本章将结合FYblog系统,以实例的形式介绍Ajax动态更新页面数据的一些技巧。值得注意的是,理解Ajax如何与PHP进行交互也是很关键的。
24.1 AJAXRequest 0.7 560
24.2 Ajax与服务器通信,发送请求和处理响应 561
24.2.1 调用Ajax框架 561
24.2.2 Ajax发送请求 564
24.2.3 处理Ajax请求 565
24.3 Ajax无刷新更新数据 572
24.3.1 触发Ajax请求 572
24.3.2 动态更新数据 573
24.4 本章小结... 574
PHP+Ajax Web 2.0编程技术与项目开发大全
- 名称
- 类型
- 大小
光盘服务联系方式: 020-38250260 客服QQ:4006604884
云图客服:
用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问
Video Player
×
Audio Player
×
pdf Player
×
亲爱的云图用户,
光盘内的文件都可以直接点击浏览哦
无需下载,在线查阅资料!