第一部分 CGI编程基础 3
第1章 通用网关接口(CGI)简介 3
1.1 CGI与WWW 3
1.2 CGI的工作原理 5
1.3 CGI程序语言 6
1.3.1 解释型语言 7
1.3.2 编译型语言 7
1.3.3 混合型语言 8
1.3.4 总结 8
1.4 常见CGI问题 9
第2章 CGI编程初步 10
2.1 POST和GET 11
2.1.1 URL编码 11
2.1.2 POST方法 12
2.1.3 GET方法 13
2.2 CGI环境变量 14
2.2.1 环境变量概述 14
2.2.2 环境变量分类 16
2.3 CGI格式化输出 18
2.3.1 CGI标题 18
2.3.2 MIME类型 19
2.3.3 Location 21
2.3.4 HTTP状态码 22
2.4 CGI程序结构 24
2.4.1 初始化 25
2.4.2 处理 25
2.4.3 终止 26
2.5 CGI程序的可移植性 26
2.5.1 平台独立性 26
2.5.2 服务器独立性 28
2.6 几点忠告 29
第3章 CGI程序运行准备 31
3.1 配置服务器 31
3.1.1 配置NCSA服务器 32
3.1.2 配置Website服务器 34
3.1.3 执行CGI程序 35
3.2 HTML简介 35
3.3 HTML文档结构定义 37
3.3.1 〈HTML〉…〈/HTML〉 37
3.3.2 〈HEAD〉…〈/HEAD〉 37
3.3.3 〈BODY〉…〈/BODY〉 38
3.4 HTML表单 39
3.4.1 〈FORM〉…〈/FORM〉标识对 40
3.4.2 INPUT标识 41
3.4.3 文本输入框 43
3.4.4 SUBMIT和RESET 44
3.4.5 RADIO控件 45
3.4.6 CHECKBOX控件 47
3.4.7 〈TEXTAREA〉…〈/TEXTAREA〉标识对 48
3.4.8 〈SELECT〉…〈/SELECT〉标识对 50
3.5 HTML表单实例 53
4.1 UserAdvice的基本框架 59
4.1.1 UserAdvice的功能 59
第二部分 CGI编程实例 59
第4章 用户意见簿 59
4.1.2 UserAdvice.html 60
4.1.3 UserAdvice.pl 60
4.1.4 测试UserAdvice 64
4.2 进一步完善UserAdvice 66
4.2.1 用户直接访问 66
4.2.2 添加计数器 67
4.3 使UserAdvice更健壮 68
4.4 UserAdvice的完整代码 69
4.5 UserAdvice的响应结果 74
4.5.1 用户直接访问 74
4.5.2 用户输入 75
4.5.3 文件错误 75
4.6 用C改写UserAdvice 76
第5章 网络考试 87
5.1 NetworkExam的基本框架 87
5.1.1 NetworkExam的功能 87
5.1.2 NetworkExam.html 88
5.1.3 NetworkExam.pl 89
5.1.4 测试NetworkExam 95
5.2 进一步完善NetworkExam 97
5.2.1 修改前台HTML文档 97
5.2.2 修改后台CGI程序 101
5.3 NetworkExam的完整代码 103
5.4 NetworkExam的响应结果 110
5.4.1 考生直接访问 110
5.4.2 考生答题 110
5.4.3 文件错误 111
5.5 用cgi-lib.pl改写NetworkExam 112
5.6 用C改写NetworkExam 119
5.7 用cgihtml改写NetworkExam 129
第三部分 CGI高级话题 141
第6章 Web数据库应用 141
6.1 文本数据库 141
6.1.1 文本数据库的格式 141
6.1.2 客户界面 141
6.1.3 student.cgi程序 142
6.2 Web索引 145
6.2.1 给HTML表单加关键字 145
6.2.2 WAIS索引 148
6.3.2 建立Web数据库应用面临的问题 153
6.3.1 为何要建立Web数据库应用 153
6.3 建立Web/RDBMS应用 153
6.3.3 简单的Web数据库应用示例 154
6.3.4 特殊Web数据库应用 160
6.3.5 Web/Database工具介绍 166
第7章 建立Web站点上的搜索引擎 169
7.1 信息收集程序 169
7.1.1 机器人概念 169
7.1.2 机器人Harvest介绍 169
7.1.3 服务器上robot.txt文件的配置 171
7.2.2 SWISH索引系统 173
7.2.1 ICE的建索引程序 173
7.2 信息组织程序 173
7.3 信息查询 175
7.3.1 搜索引擎的信息查询方式 175
7.3.2 将搜索函数加入你的站点 177
7.3.3 基于索引的查询 181
7.3.4 无索引的查询 184
7.4 搜索引擎一览 190
7.4.1 基于小型站点的简单搜索引擎 190
7.4.2 商业站点搜索引擎 191
7.5 在你的页面中加入搜索引擎 193
8.1.1 概念 197
8.1.2 SSI的功能 197
第8章 SSI 197
8.1 SSI概念 197
8.1.3 SSI与其他动态HTML技术的区别 198
8.2 SSI语法 198
8.2.1 HTML注释语法 198
8.2.2 SSI语法 198
8.3 常用SSI命令 199
8.4 配置SSI 201
8.5.1 访问记数器 202
8.5 SSI编程示例 202
8.5.2 随机输出产生器 210
8.5.3 页面首次访问时间 214
第9章 调试CGI程序 225
9.1 避免CGI出错 225
9.1.1 使用完全路径名 226
9.1.2 CGI标题出错 226
9.1.3 使用正确的MIME类型 226
9.1.4 检查输入信息的类型 226
9.2 与Web服务器交互调试 227
9.2.1 服务器返回的错误 227
9.1.6 服务器的问题 227
9.1.5 注意编程语言的特点 227
9.2.2 附加语句 229
9.3 输入信息的类型 233
9.4 浏览器与服务器之间的通信 234
9.5 调试器 237
9.6 小结 238
第10章 提高CGI程序的安全性 239
10.1 配置安全的Web服务器 239
10.1.1 配置Web服务器的原则问题 239
10.1.2 保证服务器平台自身的安全性 240
10.1.4 chroot环境 241
10.2 CGI程序的安全性原则 241
10.1.3 把Web服务器目录和文档目录分开 241
10.2.1 原则问题 242
10.2.2 示例:CGI语言带来的安全问题 242
10.3 外部函数派生的安全问题 244
10.4 CGI目录管理 249
10.5 一个隐蔽的安全漏洞 251
10.6 小结 252
A.1 cgi-lib.pl的使用 255
附录 255
附录A cgi-lib.pl简介 255
A.2 cgi-lib.pl子程序 256
A.3 cgi-lib.pl源代码 258
附录B cgihtml简介 269
B.1 cgihtml的组成 269
B.2 cgihtml的使用 269
B.3 cgihtml头文件 270
B.4 cgihtml子程序 272
B.5 cgihtml源代码 275