第1篇 Web应用篇 2
第1章 PHP与Ming扩展库 2
1.1 Ming扩展库基本应用 3
实例001 加载Ming扩展库 3
实例002 静态输出“吉林省明日科技” 3
实例003 动态输出“明日科技欢迎您” 5
1.2 Ming扩展绘制线段 6
实例004 绘制一条直线 6
实例005 绘制一条曲线 7
实例006 绘制一条旋转直线 8
1.3 Ming扩展绘制图形 10
实例007 绘制一个圆 10
实例008 绘制一个正方形 11
实例009 控制图片的渐变输出 12
实例010 控制图片向上移动 14
实例011 控制图片向下移动 16
实例012 控制图片的旋转 17
实例013 创建一个按钮并添加事件 19
第2章 PHP与ImageMagick图片处理 23
2.1 ImageMagick处理图片 24
实例014 下载、安装ImageMagick 24
实例015 判断指定图片是否存在 26
实例016 获取图片信息 27
实例017 裁剪指定的图片 28
实例018 将图片由PNG格式转换为JPG格式 30
实例019 对JPG格式的图片进行压缩 31
2.2 ImageMagick应用 32
实例020 控制图片45°旋转 32
实例021 绘制图片的缩略图 33
实例022 为图片添加旋涡效果 35
实例023 按照原始比例缩放图片 36
实例024 制作个人画册 37
第3章 AJAX无刷新技术 39
3.1 AJAX操作图像 40
实例025 AJAX无刷新图像上传 40
实例026 AJAX无刷新输出上传图像 41
实例027 AJAX无刷新载入图像 42
实例028 AJAX动态生成缩略图 43
3.2 AJAX控制表单 45
实例029 AJAX检测用户名是否被占用 45
实例030 AJAX无刷新下拉列表 48
实例031 AJAX无刷新级联下拉列表 50
实例032 AJAX验证用户注册信息 53
实例033 AJAX无刷新添加数据信息 55
3.3 AJAX操作XML 57
实例034 AJAX无刷新读取XML文件 57
实例035 AJAX读取XML节点属性 58
3.4 AJAX实战应用 60
实例036 AJAX读取HTML文件 60
实例037 AJAX添加图书信息 61
实例038 AJAX查询图书信息 63
实例039 AJAX修改图书信息 65
实例040 AJAX删除图书信息 67
实例041 AJAX无刷新分页 69
实例042 AJAX实现博客文章类别添加 72
实例043 AJAX实现用户登录 74
实例044 AJAX无刷新查询数据 76
实例045 AJAX无刷新倒计时 78
实例046 AJAX无刷新显示聊天信息 79
实例047 AJAX无刷新显示公告信息 81
实例048 AJAX无刷新获取用户的个人信息 82
实例049 AJAX无刷新获取新闻内容 85
实例050 AJAX获取指定图书信息 87
第4章 jQuery框架技术 89
4.1 网页特效 90
实例051 jQuery实现查找节点 90
实例052 图片幻灯片 91
实例053 颜色拾取器 92
实例054 广告轮显 94
实例055 图片放大镜 95
实例056 jQuery幕帘效果 96
实例057 jQuery动态变化的数字 98
实例058 jQuery淡入淡出动画效果 99
实例059 jQuery上下卷帘动画效果 100
实例060 自动隐藏式菜单 101
实例061 图片传送带 102
实例062 打造自己的开心农场 104
4.2 jQuery操作表单 106
实例063 检测用户名是否被占用 106
实例064 jQuery验证表单元素 107
实例065 密码强度检测 109
实例066 文本框提示标签 110
实例067 文本编辑器 111
实例068 右键菜单 112
实例069 jQuery二级联动下拉列表框 114
实例070 jQuery三级联动下拉列表框 116
实例071 复选框的全选、反选和全不选 118
实例072 表单动态变色 119
实例073 上传图片预览 121
实例074 通过下拉列表选择头像 122
4.3 jQuery操作表格 124
实例075 jQuery横向导航 124
实例076 jQuery竖向导航 125
实例077 jQuery弹出层 127
实例078 jQuery滑动门 129
实例079 jQuery可编辑表格 130
实例080 jQuery实现表格隔行变色 132
实例081 jQuery拖曳 133
实例082 jQuery翻滚的消息动态 135
实例083 jQuery动态换肤 136
实例084 可展开和关闭的表格 137
实例085 单行左右移动的消息提示 138
实例086 显示全部资源与精简资源 140
4.4 jQuery与Jpgraph结合 142
实例087 jQuery与Jpgraph动态制作折线图分析网站访问量 142
实例088 jQuery与GD2函数制作验证码 146
4.5 jQuery操作XML 147
实例089 通过jQuery读取XML文件 147
第5章 PHP与在线编辑工具 150
5.1 常用在线编辑器 151
实例090 自定义在线编辑器 151
实例091 在博客中应用自定义在线编辑器 153
5.2 FCKeditor在线编辑器 154
实例092 CKEditor网页编辑器 154
实例093 将CKEditor网页编辑器嵌入到后台管理系统中 156
实例094 FCKeditor文本编辑器 159
实例095 在论坛的帖子回复中应用FCKeditor 162
第6章 PHP与多媒体技术 165
6.1 操控音频文件 166
实例096 在线音乐上传 166
实例097 在线音乐下载 169
实例098 MP3在线点播 171
实例099 MP3下载 172
实例100 创建.m3u格式的文件 174
实例101 无刷新删除.m3u格式的文件 175
实例102 通过object标签向HTML页中载入多媒体 176
实例103 通过embed标签向HTML页中载入多媒体 177
实例104 歌词的同步输出 178
实例105 在线播放列表 180
实例106 在线音乐的循环播放 183
实例107 在线音乐的连续播放 186
实例108 收藏其他网站的音乐 187
6.2 操控影音文件 189
实例109 通过RealPlayer播放器播放视频文件 189
实例110 通过MediaPlayer播放器播放视频文件 191
实例111 控制播放器窗口的状态 192
实例112 播放FLV视频文件 193
实例113 在网页中加入可控的背景音乐 194
实例114 在博客中加入可控的背景音乐 196
6.3 操控Flash动画文件 197
实例115 在网页中嵌入Flash 197
实例116 在网页中嵌入背景透明的Flash 198
实例117 向Flash中传递参数 199
实例118 嵌入Flash播放器 201
实例119 用JavaScript控制Flash 202
第7章 PHP与FPDF类库应用 204
7.1 编辑、设计PDF文档 205
实例120 配置FPDF 205
实例121 创建FPDF文档 205
实例122 下载PDF文档 207
实例123 向PDF中插入图片 208
实例124 为FPDF增加中文支持 209
实例125 设置FPDF的页眉和页脚 210
实例126 通过FPDF绘制表格 212
7.2 PDF文档的实战应用 213
实例127 设计编程词典说明书的PDF文档 213
实例128 设计编程词典产品介绍的PDF文档 215
实例129 设计编程词典安装说明的PDF文档 216
实例130 动态生成编程词典注册用户的PDF文档 218
实例131 设计毕业论文的PDF文档 220
第8章 报表与打印技术 225
8.1 操作Word 226
实例132 将数据库数据保存到Word 226
实例133 将查询结果保存到Word 228
实例134 将Web页中的表格导出到Word并打印 230
实例135 打开指定的Word文档并打印 232
实例136 调用Word自动打印指定格式的会议记录 233
8.2 操作Excel 235
实例137 将MySQL数据表中的数据导出到Excel 235
实例138 将查询结果导出到Excel 237
实例139 将Web页面中的数据导出到Excel 239
实例140 将Web页面中的数据导出到Excel并自动打印 241
实例141 将Excel中的数据导出到MySQL数据库 243
实例142 将Excel中的工资数据导入到SQL Server数据库 245
实例143 将SQL Server数据导出到Excel 247
8.3 报表打印 249
实例144 调用IE自身的打印功能实现打印 249
实例145 打印指定框架中的内容 251
实例146 使用WebBrowser打印报表 252
实例147 设置页眉页脚 254
实例148 利用CSS样式打印页面中的指定内容 257
实例149 利用CSS样式实现分页打印 259
8.4 报表打印实战应用 261
实例150 打印汇款单 261
实例151 打印快递单 263
实例152 打印信封 264
实例153 GD2函数动态生成图表并打印 265
实例154 打印用户的通讯记录 267
实例155 JavaScript脚本打印账单 268
实例156 打印工资条 270
第2篇 网络应用篇 274
第9章 网络、服务与服务器 274
9.1 获取服务器信息 275
实例157 根据IP地址获取主机名称 275
实例158 根据主机名称获取IP地址 276
实例159 获取主机的所有IP地址 277
实例160 将IP地址转换为整数 277
实例161 将整数型IP地址还原为4个圆点分隔形式 278
9.2 Socket实现“C/S”通信 280
实例162 创建Socket服务器 280
实例163 创建Socket客户端 284
实例164 通过Socket发送短信 286
实例165 短信群发 288
9.3 常见网络任务 289
实例166 验证服务器是否连接 289
实例167 开发端口扫描器 291
实例168 利用curl获取HTML内容 294
实例169 利用curl模拟POST方式发送数据 295
实例170 curl批处理 297
第10章 邮件处理技术 299
10.1 配置服务器 300
实例171 SMTP和POP3服务器的安装与配置 300
实例172 Winmail服务器的安装与配置 303
实例173 通过mail()函数发送邮件 305
10.2 通过imap电子邮件系统函数操作邮件 307
实例174 登录邮件服务器 307
实例175 接收邮件 309
实例176 浏览邮件 311
实例177 下载附件 314
实例178 查找邮件 315
实例179 发送邮件 317
实例180 发送带附件的邮件 319
实例181 邮件群发 322
实例182 删除邮件 324
10.3 使用Zend_Mail组件发送邮件 325
实例183 Zend_Mail组件发送普通文本邮件 325
实例184 Zend_Mail组件发送HTML格式文本邮件 327
实例185 Zend_Mail组件发送附件 329
实例186 Zend_Mail组件发送群邮件 331
实例187 Zend_Mail组件接收邮件 333
实例188 Zend_Mail组件获取邮件内容 335
第11章 XML操作技术 337
11.1 创建XML文件 338
实例189 手动创建XML文件 338
实例190 在PHP中创建XML文件 339
实例191 通过文件系统函数创建XML文件 340
实例192 通过DOM创建XML文件 342
实例193 读取XML文件 343
11.2 XML文件节点操作 345
实例194 插入XML节点 345
实例195 修改XML节点 346
实例196 删除XML节点 347
11.3 XML文件转换 347
实例197 在HTML页面中使用XML文件 348
实例198 在XML文件中应用CSS样式 349
实例199 XSL转换XML文件 350
11.4 SimpleXML函数操作XML 351
实例200 遍历所有子节点 351
实例201 遍历所有属性 352
实例202 访问特定节点元素和属性 353
实例203 修改并保存XML文档 354
11.5 动态操作XML 355
实例204 PHP动态创建XML文档 356
实例205 PHP动态添加XML数据 358
实例206 PHP动态查询XML数据 360
实例207 PHP动态修改XML数据 362
实例208 PHP动态删除XML数据 364
11.6 XML实战应用——留言板 366
实例209 用户注册 366
实例210 用户登录 368
实例211 发布留言 370
实例212 浏览留言 371
实例213 编辑留言 373
实例214 删除留言 374
11.7 XML实战应用——RSS阅读器 376
实例215 创建支持RSS阅读的站点 376
实例216 动态创建RSS文件 378
实例217 创建RSS阅读器的框架 379
实例218 添加频道组 381
实例219 删除频道组 382
实例220 添加频道 384
实例221 删除频道 386
实例222 树状导航菜单输出频道组和频道 388
实例223 AJAX无刷新读取订阅信息 389
第12章 Web服务器与远程过程调用 392
12.1 SOAP扩展 393
实例224 Windows下安装、配置SOAP 393
实例225 建立SOAP服务器端 393
实例226 建立SOAP客户端 395
12.2 PHP与Web Service的交互操作 396
实例227 NuSOAP类库的安装、配置 396
实例228 PHP创建Web Service 397
实例229 PHP访问Web Service 399
实例230 PHP通过Web Service发送短信 400
12.3 XML-RPC(远程过程调用) 402
实例231 客户端请求的XML格式 402
实例232 服务器响应的XML格式 404
实例233 错误信息的XML格式 405
实例234 XML-RPC的综合应用——数学运算 405
第13章 LDAP(轻量级目录访问协议) 408
13.1 LDAP服务器的安装与配置 409
实例235 安装LDAP服务器 409
实例236 配置LDAP服务器 410
实例237 OpenLDAP的启动和关闭 411
13.2 通过命令操作LDAP服务器 412
实例238 通过命令向OpenLDAP服务器中添加数据 412
实例239 通过命令查询OpenLDAP服务器中的数据 413
13.3 phpLDAPadmin图形工具简介 414
实例240 下载安装phpLDAPadmin工具 414
13.4 PHP操作LDAP服务器 415
实例241 在PHP中加载LDAP 415
实例242 连接、绑定和断开LDAP服务器 416
实例243 查询LDAP目录的内容 417
实例244 获取查询结果中的值 418
实例245 统计查询结果的记录数 419
实例246 向LDAP中添加记录 420
实例247 更新LDAP中的记录 421
实例248 删除LDAP中的记录 422
实例249 获取错误处理信息 423
实例250 LDAP服务器实战应用——验证用户身份 424
第14章 PHP与WAP技术 425
14.1 配置WAP 426
实例251 Apache中配置WAP 426
实例252 制作第一个WAP页面 427
实例253 WAP页面跳转 427
14.2 WAP的应用 428
实例254 动态生成图像 428
实例255 使用WAP获取下拉列表框选项内容 429
实例256 使用WAP制作用户注册页面 431
实例257 站内查询功能 432
实例258 使用WAP制作用户登录页面 434
14.3 Smarty与WAP 436
实例259 通过if语句判断当前用户的权限 436
实例260 通过foreach语句读取数组中的数据 438
实例261 Smarty模板中生成数字验证码 439
实例262 通过html_options()函数向下拉列表框中添加列表项 441
实例263 在模板文件中定义CSS样式 443
实例264 通过section循环输出数据 444
实例265 Smarty实现数据库信息分页显示 446
实例266 Smarty模板中时间的格式化输出 448
实例267 Smarty模板中的编码 450
实例268 Smarty模板中应用正则表达式 451
实例269 Smarty模板中的关键字描红技术 453
实例270 Smarty模板中控制输出字符串的行宽 454
实例271 Smarty模板中自定义创建form表单 456
实例272 register_function()方法注册模板函数 459
实例273 register_object()方法注册模板对象 461
实例274 在Smarty中通过truncate方法截取字符串 465
实例275 Smarty模板制作用户注册页面 466
实例276 Smarty模板制作后台管理系统主页 468
实例277 Smarty模板页嵌入PHP脚本 470
实例278 在模板中包含子模板 471
实例279 为网站的首页开启缓存 472
实例280 开启网站注册页面的缓存 474
实例281 通过配置文件定义变量 475
第15章 PHP与FTP 478
15.1 安装、配置服务器端软件 479
实例282 安装、配置Serv-U 479
实例283 连接、关闭FTP服务器 482
15.2 操作FTP服务器 483
实例284 上传文件到FTP服务器 483
实例285 从FTP服务器中下载文件 485
实例286 更改FTP服务器中的文件名称 486
实例287 删除FTP服务器中的指定文件 487
实例288 在FTP服务器中创建目录 488
实例289 遍历FTP服务器指定目录下的文件 490
实例290 文件批量上传到FTP服务器 491
实例291 将指定类型的文件上传到FTP服务器 493
实例292 将FTP服务器中的文件批量下载到本地 494
实例293 将指定类型的文件下载到本地计算机 495
实例294 查看FTP服务器指定子目录下的详细信息 496
第3篇 数据库与抽象层篇 500
第16章 PostgreSQL数据库 500
16.1 PostgreSQL数据库的安装与操作 501
实例295 PostgreSQL数据库安装 501
实例296 PostgreSQL服务的启动与停止 503
实例297 启动pgAdmin Ⅲ工具 504
实例298 连接PostgreSQL服务器 505
16.2 通过pgAdminⅢ操作PostgreSQL数据库 506
实例299 创建database16数据库 506
实例300 创建tb_book数据库表 507
实例301 向tb_book表中添加数据 509
实例302 在pgAdminⅢ中通过SQL语句查询tb_book表中数据 510
16.3 PHP操作PostgreSQL数据库 511
实例303 在PHP中加载PostgreSQL函数库 511
实例304 连接、关闭PostgreSQL数据库 512
实例305 pg_query()函数执行SQL语句 513
实例306 pg_num_rows()函数获取查询结果集的记录数 514
实例307 pg_fetch_array()函数将结果集返回到数组 515
实例308 pg_fetch_row()函数从结果集中获取一行作为枚举数组 516
实例309 pg_fetch_assoc()函数返回关联数组 517
实例310 pg_insert()函数添加图书信息 518
实例311 select语句查询图书信息 519
实例312 分页显示图书信息 521
实例313 pg_update()函数更新图书信息 524
实例314 图书名称的批量更新 526
实例315 pg_delete()函数删除图书信息 530
实例316 图书信息的批量删除(删除前给出提示信息) 531
第17章 SQLite数据库 536
17.1 SQLite数据库的安装与配置 537
实例317 下载安装SQLite数据库 537
实例318 配置SQLite数据库 538
17.2 SQLite数据库的操作 538
实例319 创建database17数据库 538
实例320 查看database17数据库 539
实例321 创建tb_user数据表 541
实例322 查看tb_user数据表 542
实例323 向tb_user数据库表中添加数据 542
实例324 查看tb_user数据表中的数据 543
17.3 PHP操作SQLite数据库 545
实例325连接、关闭数据库 545
实例326 query()方法执行SQL语句 546
实例327 fetchArray()方法返回数组结果行 547
实例328 获取查询结果集的记录数 549
实例329 获取结果集列数 550
实例330 reset()方法返回第一行数据 550
实例331 获取最近插入数据的ID值 552
实例332 返回数据库受影响行数 552
实例333 prepare预查询语句 553
实例334 添加用户注册信息 555
实例335 用户登录 556
实例336 查询注册用户 557
实例337 分页显示注册用户信息 559
实例338 显示用户信息按照ID排序 561
实例339 修改用户注册信息 564
实例340 删除注册用户 566
第18章 PDO数据库抽象层 568
18.1 PDO安装、配置 569
实例341 Windows下安装PDO 569
实例342 Linux下安装PDO 570
18.2 PDO连接数据库 571
实例343 PDO连接MySQL数据库 571
实例344 PDO连接SQL Server 2000数据库 572
实例345 PDO连接Access数据库 573
实例346 PDO连接Oracle数据库 575
实例347 PDO连接PostgreSQL数据库 576
实例348 PDO连接SQLite数据库 577
18.3 PDO查询 578
实例349 向图书信息表中添加数据 578
实例350 修改图书表中的数据 580
实例351 删除图书信息表中的指定数据 584
实例352 删除图书信息表中的所有数据 585
实例353 查询字符串 587
实例354 查询日期型数据 589
实例355 查询逻辑型数据 591
实例356 查询非空数据 594
实例357 利用变量查询字符串数据 597
实例358 利用变量查询数值型数据 600
实例359 查询指定的N条记录 602
实例360 查询前N条记录 604
实例361 查询后N条记录 606
实例362 查询从指定位置开始的N条记录 608
实例363 查询统计结果中的前N条记录 610
实例364 查询指定时间段的数据 612
实例365 按月查询统计数据 614
实例366 查询大于指定条件的记录 616
实例367 查询结果不显示重复记录 618
实例368 NOT与谓词进行组合条件的查询 620
实例369 显示数据表中的重复记录和记录条数 622
实例370 对数据进行降序查询 624
实例371 对数据进行多条件排序 626
实例372 对统计结果进行排序 629
实例373 单列数据分组统计 631
实例374 多列数据分组统计 633
实例375 多表分组统计 635
实例376 使用聚集函数sum()对学生成绩进行汇总 637
实例377 使用聚集函数avg()求平均每月的图书销量 639
实例378 使用聚集函数min()求销售额、利润最少的商品 642
实例379 使用聚集函数max()求月销售额完成最多的销售记录 644
实例380 使用聚集函数count()求日销售额大于某值的记录数 646
实例381 使用聚集函数first(或last)求数据表中第一条或最后一条记录 648
实例382 使用from子句进行多表查询 650
实例383 使用表的别名 652
实例384 合并多个结果集 654
实例385 简单的嵌套查询 656
实例386 复杂的嵌套查询 658
实例387 复杂嵌套查询在查询统计中的应用 661
实例388 使用子查询作派生的表 663
实例389 使用子查询作表达式 665
实例390 使用子查询关联数据 667
实例391 多表联合查询 670
实例392 对联合查询后的结果进行排序 672
实例393 条件联合语句 674
实例394 简单内连接查询 676
实例395 复杂内连接查询 678
实例396 两表的内连接关联 680
实例397 使用外连接进行多表联合查询 682
实例398 left outerjoin查询 684
实例399 right outer join查询 687
实例400 利用in或notin语句限定范围 689
实例401 用in查询表中的记录信息 691
实例402 由in引入的关联子查询 693
实例403 利用transform分析数据 695
实例404 利用transform统计数据 698
实例405 使用格式化函数转换查询条件的数据类型 700
实例406 在查询中使用字符串函数 702
实例407 在查询中使用日期函数 704
实例408 利用having语句过滤分组数据 707
18.4 PDO错误处理 709
实例409 获得查询错误号 709
实例410 获得查询错误信息 710
实例411 在PDO中设置错误模式 711
实例412 通过异常处理捕获PDO异常信息 712
实例413 使用函数die()打印错误信息 713
18.5 PDO事务 714
实例414 执行一个批处理事务 714
实例415 实现银行安全转账 716
实例416 多表数据同时安全删除 719
实例417 通过事务处理方式保存数据 720
实例418 通过事务处理方式更新数据 722
18.6 PDO存储过程 725
实例419 通过存储过程实现用户注册 725
实例420 通过存储过程实现用户登录 727
实例421 通过存储过程删除注册用户 729
实例422 通过存储过程修改学生信息 731
第19章 PHP Lib数据库抽象层 734
19.1 PHPLib下载、安装 735
实例423 下载PHPLib 735
实例424 使用require语句导入PHPLib类库 735
实例425 自动加载PHPLib类库文件 737
19.2 PHPLib操作MySQL数据库 737
实例426 向产品信息表中添加数据 737
实例427 修改产品信息表中的数据 739
实例428 删除产品信息表中的指定数据 742
实例429 删除商品信息表中的所有数据 744
实例430 查询字符串 745
实例431 查询日期型数据 747
实例432 查询逻辑型数据 750
实例433 查询非空数据 753
实例434 利用变量查询字符串数据 755
实例435 利用变量查询数值型数据 757
实例436 查询指定的N条记录 759
实例437 查询前N条记录 760
实例438 查询后N条记录 762
实例439 查询从指定位置开始的N条记录 763
实例440 查询统计结果中的前N条记录 765
实例441 查询指定时间段的数据 766
实例442 分页查询 768
19.3 PHPLib操作Oracle数据库 770
实例443 添加留言信息 770
实例444 修改留言信息 773
实例445 删除留言信息 776
实例446 留言信息分页输出 778
实例447 查询留言信息 781
第4篇 网站安全与优化篇 784
第20章 网站策略与安全 784
20.1 文件保护 785
实例448 防止用户直接输入地址访问PHP文件 785
实例449 防止页面重复提交 786
实例450 对查询字符串进行URL编码 789
实例451 过滤HTML非法字符 791
实例452 禁止用户输入敏感字符 794
20.2 漏洞防护 795
实例453 防止Access数据库被下载 795
实例454 操作带密码的Access数据库 796
实例455 越过表单限制漏洞 799
实例456 文件上传漏洞 802
实例457 隐藏PHP文件扩展名 804
实例458 通过邮箱激活注册用户 805
实例459 本地文件包含漏洞 812
实例460 远程文件包含漏洞 813
实例461 检测文件上传类型 814
实例462 SQL注入漏洞 816
20.3 数据加密 818
实例463 通过base64对数据库进行编码 818
实例464 以RFC1738规则对URL进行编码 819
实例465 禁止复制和另存为网页内容 821
实例466 通过MD5对用户密码进行加密 822
实例467 使用crypt()函数对用户注册密码进行加密 824
实例468 使用shal()函数对用户注册密码进行加密 825
实例469 使用Mcrypt扩展库对用户注册密码进行加密 826
实例470 通过Mhash扩展库对用户注册密码进行加密 828
20.4 身份验证 829
实例471 直接对用户的身份进行验证 829
实例472 通过文本文件对用户身份进行验证 830
实例473 验证码登录技术 832
实例474 通过数据库完成身份的验证 834
实例475 通过IP验证用户身份 835
实例476 为注册用户生成随机密码 837
第21章 PHP调试、升级与优化 839
21.1 错误类型举例 840
实例477 语法错误 840
实例478 定义错误 841
实例479 逻辑错误 842
实例480 运行错误 843
实例481 环境错误 844
21.2 程序调试方法 845
实例482 应用die()语句调试 845
实例483 应用mysql_error()语句输出错误信息 846
实例484 应用try{}catch{}语句抛出并捕获异常 847
21.3 错误处理技巧 848
实例485 隐藏错误 848
实例486 自定义错误页面 849
实例487 延长服务器执行时间——处理超时错误 850
实例488 如何分析、解决PHP与MySQL连接错误 852
实例489 解决数据库乱码问题 853
实例490 封装属于自己的异常处理类 855
实例491 使用错误处理器记录日志 856
实例492 通过mysql_error()函数调试SQL语句中的错误 857
实例493 通过phpMyAdmin调试SQL语句中的错误 858
21.4 PHP优化技巧 859
实例494 PHP脚本级优化 859
实例495 使用代码优化工具 860
实例496 使用代码优化工具 862
实例497 MySQL日志维护 864
实例498 Apache服务器优化 865
实例499 内容压缩与优化 866
21.5 常见的程序漏洞和防护 867
实例500 允许用户设置全局变量漏洞 867
实例501 文件上传漏洞 868
实例502 根据错误信息攻击服务器漏洞 869
实例503 远程文件包含漏洞 870
实例504 SQL注入漏洞 871
第5篇 框架与项目整合篇 874
第22章 ThinkPHP框架 874
22.1 ThinkPHP的MVC环境搭建 875
实例505 环境配置 875
实例506 框架结构 876
实例507 创建流程 878
22.2 ThinkPHP的MVC操作 880
实例508 URL访问 880
实例509 ThinkPHP控制器 881
实例510 ThinkPHP视图 883
实例511 ThinkPHP模型 885
22.3 ThinkPHP的访问数据库操作 886
实例512 连接MySQL数据库 886
实例513 用户注册 888
实例514 用户登录 892
实例515 发布信息 895
实例516 查询信息 897
实例517 修改信息 898
实例518 删除信息 901
实例519 信息分页显示 903
第23章 Zend Framework框架 906
23.1 Zend Framework的MVC环境搭建 907
实例520 环境配置 907
实例521 框架结构 908
实例522 创建流程 909
实例523 Zend Framework的编码标准 912
23.2 Zend_Layout网站布局 913
实例524 Zend_Layout对站点进行布局 913
实例525 通过Zend_Layout对新闻页面进行布局 914
23.3 Zend_Config配置文件 916
实例526 Zend_Config配置站点初始参数 916
23.4 Zend_Cache缓存服务 919
实例527 Zend_Cache对数据库中的信息缓存输出 919
实例528 通过Zend_Cache删除缓存 921
23.5 Zend_Paginator分页 923
实例529 Zend_Paginator实现数据分页显示 923
实例530 通过修改样式做成下拉列表分页 925
23.6 Zend_Form表单 927
实例531 使用Zend_Form制作用户注册表单 927
实例532 使用Zend_Form制作用户登录页面 929
23.7 Zend_Auth身份认证 931
实例533 使用Zend_Auth对用户身份进行验证 931
实例534 身份持久认证 935
23.8 Zend_Acl权限管理 938
实例535 通过Zend_Acl控制角色和资源的权限 938
实例536 通过Zend_Acl完成精细的访问权限控制 939
23.9 Zend_Db数据库操作 940
实例537 Zend_Db_Adapter数据库操作 940
实例538 Zend_Db_Table数据库操作 940
实例539 数据表类 942
23.10 Zend_File文件控制 945
实例540 使用Zend_File_Transfer_Adapter_Http实现POST方式文件上传 945
实例541 对上传文件的合理性验证 947
实例542 为上传增加过滤规则 948
实例543 使用Zend Framework实现查询结果的关键字描红 948
第24章 明日导航网(ThinkPHP) 952
24.1 数据库设计 953
实例544 创建数据库 953
实例545 创建数据表 953
24.2 MVC框架结构搭建 956
实例546 ThinkPHP框架的MVC目录结构 956
实例547 ThinkPHP框架的MVC结构创建过程 957
24.3 前台设计 958
实例548 连接数据库 958
实例549 前台首页设计 959
实例550 前台首页子页面设计 961
24.4 后台管理设计 962
实例551 创建后台管理架构 963
实例552 后台登录 964
实例553 后台管理主页设计 965
实例554 高级类别管理 967
实例555 判断访问用户的权限 970
实例556 操作提示页面 971
实例557 ThinkPHP框架中的分页技术 972
第25章 明日搜索引擎(Zend Framework) 973
25.1 数据库设计 974
实例558 创建数据库 974
实例559 创建数据表 975
25.2 MVC框架结构搭建 977
实例560 Zend Framework框架的MVC目录结构 977
实例561 Zend Framework框架的MVC结构创建过程 978
25.3 前台设计 980
实例562 首页设计 980
实例563 用户注册 983
实例564 用户登录 985
实例565 发表问题 987
实例566 回复问题 989
实例567 验证码生成 992
实例568 类似Google搜索引擎的搜索条 994
实例569 使用空格分隔多关键字 997
实例570 查询结果的分页输出 998
实例571 关键字描红 1000
实例572 制作在线编辑器 1001
实例573 自定义错误页面 1004
25.4 后台设计 1005
实例574 后台管理员登录 1005
实例575 用户管理 1007
实例576 退出登录 1010