分享
 
 
 

用Delphi编写CGI程序(六)

王朝delphi·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

用Delphi编写CGI程序(六)

在 前 面 的 几 个 章 节 里 , 我 们 完 成 了 CGI 程 序 的 一 般 论 述 。 在 此 , 我 给 出 一 个 简 单 的 示 范 程 序 作 为 对 以 前 的 内 容 的 总 结 。

要 使 用 这 个 程 序 , 您 需 要 OmniHTTPD 的 最 新 测 试 版 : OmniHTTPD 2.0b1 (beta 1) for Windows 95/NT 。 如 果 您 没 有 , 可 以 在 这 里 下 载 ( oh20b1.zip) 。

安 装 OmniHTTPD 同 第 一 讲 中 的 方 法 一 样 , 这 里 就 不 再 讲 了 。 我 在 这 里 只 讲 一 讲 这 一 版 本 中 的 一 些 设 置 问 题 :

打 开 OmniHTTPD 的 属 性 设 置 对 话 框 , 使 用 Web Server Global Setting 按 钮 , 转 到 External 页 , 将 .cgi 的 设 置 删 除 。 在 未 删 除 时 , 用 cgi 作 扩 展 名 的 CGI 程 序 是 作 为 Perl 程 序 处 理 的 ; 在 我 们 的 课 程 中 , Perl 语 言 的 CGI 程 序 的 扩 展 名 是 .pl , 而 编 译 后 的 CGI 程 序 扩 展 名 是 .cgi , 所 以 , 要 将 设 置 作 这 样 的 修 改 。

在 这 个 版 本 的 OmniHTTPD 中 , 对 SSI(Server Side Include) 命 令 的 支 持 比 以 前 的 版 本 大 大 加 强 了 , 支 持 include 、 exec 等 命 令 。 在 示 范 程 序 中 , 我 用 到 了 这 些 命 令 。

您 将 (ex8.zip) 下 载 后 , 里 面 包 含 三 个 文 件 : index.shtml 、 makelog.cpp 和 makelog.exe 。 index.shtml 是 一 个 包 含 SSI 命 令 的 脚 本 , 请 拷 贝 到 c:\httpd\htdocs 目 录 下 ; makelog.exe 是 CGI 程 序 , 请 拷 贝 到 c:\httpd\cgi-bin 目 录 下 ; makelog.cpp 是 makelog.exe 的 源 文 件 , 如 果 您 要 修 改 编 译 的 话 , 必 须 用 32 位 的 编 译 器 , 如 VC 等 , 否 则 无 法 使 用 。

除 此 之 外 , 您 需 要 将 OmniHTTPD 中 的 设 置 作 一 个 修 改 : 选 择 Default Virtual Setting , 在 Server 页 上 将 Default Index 改 为 index.shtml 。 这 样 , 当 您 在 浏 览 器 中 敲 入 http://localhost 时 , OmniHTTPD 自 动 调 入 index.shtml 。

再 做 一 个 WEB 文 档 , 以 index.html 为 文 件 名 存 在 c:\httpd\htdocs 目 录 下 。 您 用 浏 览 器 访 问 localhost 时 , index.shtml 先 调 用 makelog.exe , 存 储 用 户 的 访 问 信 息 , 再 调 用 index.html , 将 其 显 示 在 浏 览 器 中 。 用 户 的 访 问 信 息 存 储 在 c:\httpd\cgi-bin 目 录 下 的 userlog 文 件 中 。

这 个 实 例 用 到 了 CGI 规 范 中 基 本 的 环 境 变 量 和 SSI 技 术 , 请 您 好 好 研 究 一 下 。

4 、 数 据 库

在 CGI 的 应 用 中 , 数 据 库 方 面 的 应 用 是 最 体 现 CGI 程 序 强 大 功 能 的 。 在 互 联 网 上 , 数 据 库 是 非 常 多 的 , 而 这 些 数 据 库 的 WEB 应 用 的 需 求 也 是 越 来 越 多 ( 无 论 是 来 自 公 司 的 还 是 来 自 用 户 的 需 求 ) 。 可 以 说 , WEB 本 身 就 是 一 个 巨 大 的 数 据 库 , 如 何 将 这 些 庞 大 的 数 据 集 合 有 效 的 组 织 起 来 , 在 WEB 上 进 行 发 布 , 是 CGI 和 数 据 库 系 统 共 同 解 决 的 课 题 。

如 果 要 对 CGI 和 数 据 库 的 应 用 进 行 分 类 的 话 , 从 不 同 角 度 有 不 同 的 分 类 方 法 。 例 如 , 按 数 据 库 的 规 模 可 以 分 成 文 本 数 据 库 、 本 地 数 据 库 (Microsoft Access 等 ) 和 数 据 库 服 务 器 (MS SQL Server 、 Informix 等 ) ; 按 CGI 的 处 理 内 容 可 以 分 为 前 端 数 据 库 CGI 程 序 ( 同 使 用 WEB 浏 览 器 的 用 户 交 互 的 CGI 程 序 ) 和 后 端 数 据 库 CGI 程 序 ( 同 数 据 库 交 互 的 CGI 程 序 ) 等 。 选 择 数 据 库 的 规 模 通 常 取 决 于 您 要 完 成 的 任 务 的 数 据 量 、 成 本 等 ; 在 编 制 CGI 程 序 时 采 用 前 端 和 后 端 分 开 还 是 结 合 通 常 取 决 于 您 的 数 据 处 理 的 复 杂 程 度 等 。

通 常 , 如 果 您 的 数 据 集 合 在 几 兆 字 节 之 内 , 而 且 您 的 数 据 记 录 之 间 没 有 复 杂 的 关 系 , 您 可 以 选 择 用 文 本 文 件 建 立 数 据 库 , 这 样 可 以 使 成 本 限 制 在 最 小 , 而 且 文 本 文 件 有 一 个 数 据 库 管 理 系 统 (DBMS , 即 DataBase Management System) 所 没 有 的 优 势 : 如 果 您 的 数 据 发 生 了 错 误 , 您 可 以 将 您 的 文 本 文 件 调 入 任 何 一 个 文 本 编 辑 器 进 行 恢 复 , 而 若 是 您 的 数 据 库 系 统 发 生 了 错 误 , 除 非 您 是 一 个 数 据 库 专 家 , 否 则 很 难 修 复 。

如 果 您 的 数 据 集 合 非 常 大 , 或 者 您 的 数 据 记 录 之 间 存 在 着 复 杂 的 关 系 , 则 最 好 选 用 数 据 库 系 统 。 用 文 本 文 件 实 现 一 个 几 十 兆 的 数 据 库 会 使 任 何 一 台 高 级 的 RISC 服 务 器 不 堪 重 负 。 如 果 您 用 CGI 程 序 处 理 数 据 间 复 杂 的 关 系 , 必 然 会 使 CGI 程 序 的 复 杂 性 加 大 , 占 用 过 多 的 服 务 器 资 源 ; 另 一 方 面 , 利 用 数 据 库 系 统 的 功 能 可 以 简 化 CGI 程 序 设 计 的 难 度 , 提 高 开 发 效 率 。

在 选 择 数 据 库 系 统 时 , 您 需 要 从 以 下 几 个 方 面 进 行 选 择 : 一 、 操 作 系 统 平 台 : 您 应 该 选 择 您 最 熟 悉 的 数 据 库 系 统 , 也 要 选 择 您 最 熟 悉 的 操 作 系 统 平 台 , 只 有 这 样 , 才 可 以 少 出 错 误 。 二 、 价 格 : 您 应 在 各 种 能 完 成 您 的 工 作 的 数 据 库 系 统 中 选 择 最 便 宜 的 , 在 这 里 , 我 可 以 告 诉 大 家 一 个 免 费 的 数 据 库 系 统 , 叫 MiniSQL , 它 必 须 在 UNIX 或 Linux 平 台 上 运 行 , 我 还 不 知 道 哪 里 有 Windows 平 台 的 免 费 数 据 库 系 统 , 如 果 谁 知 道 , 请 告 诉 我 , 我 会 在 今 后 的 课 程 中 告 诉 大 家 的 。

我 们 的 课 程 是 讲 述 用 Delphi 开 发 CGI 程 序 的 , 而 Delphi 中 提 供 了 Interbase Server 数 据 库 系 统 , 因 此 , 我 在 这 里 将 主 要 讲 述 采 用 数 据 库 系 统 的 CGI 程 序 开 发 。 同 时 , 由 于 数 据 库 系 统 减 轻 了 大 量 的 编 码 工 作 , 我 采 用 前 端 CGI 和 后 端 CGI 合 二 为 一 的 方 式 , 在 一 个 CGI 程 序 中 就 完 成 用 户 输 入 处 理 和 数 据 库 操 作 。 但 在 其 他 的 系 统 平 台 上 , 也 许 这 种 方 式 会 不 使 用 , 请 各 位 读 者 按 前 面 的 讨 论 自 己 斟 酌 。

在 这 里 , 我 要 附 带 说 明 一 下 几 种 不 同 的 CGI 及 其 在 我 们 的 OmniHTTPD 中 的 使 用 差 别 :

Standard CGI : 标 准 CGI , 必 须 放 置 在 /cgi-bin/ 设 置 的 目 录 下 , 可 以 在 OmniHTTPD 运 行 时 随 时 修 改 。

Win CGI : 应 用 在 Windows 系 统 中 的 CGI , 必 须 放 置 在 /cgi-win/ 设 置 的 目 录 下 。 此 CGI 应 用 INI 文 件 获 取 用 户 端 浏 览 器 的 请 求 , 而 不 是 使 用 环 境 变 量 或 标 准 输 入 。 我 们 一 般 不 使 用 这 种 CGI 。

ISAPI : Microsoft 公 司 提 出 的 一 种 应 用 动 态 链 接 库 的 CGI 规 范 。

NSAPI : Netscape 公 司 提 出 的 一 种 应 用 动 态 链 接 库 的 CGI 规 范 。

这 几 种 CGI 规 范 各 有 特 点 : 其 中 Standard CGI 可 以 使 用 可 执 行 程 序 或 Perl 等 脚 本 语 言 编 写 , 但 效 率 低 , 占 用 资 源 多 , 每 一 个 CGI 请 求 就 会 有 一 个 CGI 程 序 的 实 例 在 服 务 器 中 运 行 。 Win CGI 的 特 点 同 Stardand CGI 相 同 。 ISAPI 和 NSAPI 效 率 高 , 常 驻 内 存 , 而 且 无 论 有 多 少 个 CGI 请 求 , 在 服 务 器 中 只 有 一 个 实 例 在 运 行 , 仅 仅 是 这 个 实 例 对 应 的 数 据 集 合 不 同 ; 但 这 种 CGI 不 易 调 试 , 因 为 它 必 须 在 WEB 服 务 器 软 件 关 闭 时 才 可 以 进 行 更 新 。

在 下 一 讲 中 , 我 将 给 出 一 个 White Page 的 示 范 程 序 。 White Page 是 一 个 电 子 邮 件 地 址 的 清 单 , 您 可 以 让 用 户 通 过 WEB 浏 览 器 对 这 个 清 单 进 行 查 询 、 编 辑 、 新 增 和 删 除 等 操 作 。 在 这 一 讲 中 , 我 给 出 的 示 范 程 序 仅 仅 是 查 询 操 作 , 其 他 的 操 作 将 在 以 后 的 课 程 中 讲 述 。

这 个 示 范 程 序 建 立 在 Borland Interbase Server 数 据 库 上 , 用 Delphi 开 发 。 在 开 发 中 , 我 选 择 的 是 Standard CGI , 因 为 这 样 容 易 调 试 。

我 们 的 程 序 使 用 Stardand CGI 进 行 编 写 , 可 以 方 便 的 调 试 。 等 调 试 成 功 后 , 在 Delphi 中 可 以 很 方 便 的 改 成 ISAPI/NSAPI , 仅 仅 是 一 个 语 句 ( 怎 么 样 , Delphi 很 不 错 吧 ! ) 。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有