用Delphi编写CGI程序(六)

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
用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 很 不 错 吧 ! ) 。





Delphi编写CGI程序(四) Delphi编写CGI程序(四) 从 这 一 讲 开 始,我 们 将 进 入 CGI 程 序 设 计 的 学 习 过 程。通 过 前 面 几 讲 的 学 习,您 已 经 掌 握 了 CGI 程 序 设 计 的 基 础 知 识。现 在,您 可 以 坐 下 来 编 写 CGI 程 序 了!  三、CGI 程 序 设 计   1、服 务 器 端 附 件 (SSI) 阅读详情

相关推荐

Delphi开发CGI

<br />------------------------------------这是以前写下的---------------------------------------<br /> <br /> <br /> <br />在JAVA泛滥、ASP.net 漫山遍野的今天,也许,大家认为CGI是一种落后的技术,但,也许大家有所不知的是CGI是一种效率很高的编程方式。因为,在前端,CGI不用面对复杂的网络请求过程,而后端输出,又是可以直接输出给浏览器。<br /><br /> 宝刀未老的PERL,是CG

小橙的第一播 4205

delphi CGI

delphi 实现CGI EXE程序,自带的webservice生产的在IIS下无法运行,本例详细写明了CGI程序的结构,目前在网上还没发现类似的资源。 共朋友们分享。 写这样一个CGI的初衷:原本有一个CGI,想写一个类似的名称的程序代替,只能用exe cgi,如果是自己开始开发,就没必要这么麻烦了

Delphi编写soap服务器与客户端程序

Delphi编写soap服务器与客户端程序使用三层结构开发客户机、服务器软件已成为c/s系统中的主流;下面是自己在开发系统中的一些体会;本文已delphi7(windows)或kylix3(linux9)为环境描述:1、编写服务器程序      首先,看看soap服务器的建立,在delphi7中的新建栏目中,选择“ WebServices”如下图,选择“Soap Server Applicat

我心飞扬 8605

Delphi编写CGI程序(一)

Delphi编写CGI程序(一)   1.0 、 CGI 程 序 的 功 能:     首 先, 什 么 是 公 共 网 关 接 口( CGI ) 呢? CGI 是 一 个 用 于 定 义 WEB 服 务 器 与 外 部 程 序 之 间 通 信 方 式 的 标 准, 使 得 外 部 程 序 能 生 成 HTML 、 图 象 或 者 其 他 内 容, 而 服 务 器

zou5655的专栏 1485

如何设置 IIS 用以运行Delphi 编译的 CGI 程序

结合一些好的前端库,可以很简单地作出非常漂亮功能强大的基于 WEB 页面的程序。具体做法这里就不细说了。在 Delphi 里面新建一个 Web Server 的工程,选择 IIS CGI 以后,这个工程编译出来的就是一个 Windows 的 Exe 可执行文件,它就是可以在 IIS 底下被 IIS 调用的 CGI 程序。额外说一句:Delphi 还可以编译出。

pcplayer的博客 944

如何在Delphi6中调试web程序步骤

1.新建一个web工程,请选中最下面一项:Web App Debugger executable,Coclass name我们设为demo1; 2.在弹出的WebModule2中右击,在弹出的Action编辑框中新建一个webaction,选中,设置Default属性为True,在其onaction事件中编写如下代码,输出一个仅显示‘hello,dephi!’的html页; 3

踏雪无痕 1297

apache下部署delphi写的cgi

1.安装好apache服务器。 2.将cgi(一般是exe)拷贝到cgi-bin文件夹改后缀为cgi. 3.访问http://xx:port/cgi-bin/cgi-name.cgi 这样就可以了。

沧海一粟 1048

Delphi编写CGI程序(三)

Delphi编写CGI程序(三)   也 许 各 位 读 者 感 到 CGI 程 序 有 一 种 神 秘 感, 在 这 一 部 分 将 讲 述 一 些 关 于 CGI 程 序 的 基 本 编 程 过 程。 您 读 了 之 后, 就 不 会 再 有 神 秘 感 了。    3 、 CGI 规 范 的 其 他 问 题:     也 许 各 位 读 者 感 到 CGI

zou5655的专栏 1158

Delphi编写CGI程序(二)

Delphi编写CGI程序(二)   在 上 一 讲 中, 我 们 介 绍 了 CGI 程 序 的 功 能。 今 天, 我 们 进 入: 第 二 部 分、 CGI 程 序 设 计 的 概 念 。本 讲 的 内 容 是 深 入 了 解 CGI 程 序 的 基 础。 本 系 列 讲 座 是 用 Delphi 编 写 CGI 程 序, 对 于 本 次 的 内 容 Del

zou5655的专栏 1492

Delphi编写CGI程序(五)

Delphi编写CGI程序(五)   CGI 程 序 的 功 能 是 强 大 的, 但 正 是 因 为 如 此 , 如 果 您 作 为 CGI 开 发 人 员 或 系 统 管 理 人 员 不 注 意 编 写 和 设 置 CGI 程 序 的 话,将 使 您 的 系 统 千 疮 百 孔。 本 篇 就 CGI的 安 全 性 问 题 做 一 讨 论。 3 、 CGI

zou5655的专栏 962

Delphi编写CGI程序返回图象

珠海西门子表计公司  汪永荣  ---- Delphi 4.0对Internet编程提供了强大的支持,Delphi 4.0编写CGI非常容易, Delphi 4.0本身提供了例程。但是笔者在实践中遇到需要CGI程序根据数据库动态 返回图象的情况,很多文章推进使用Cgi-Expert或有关的OCX控件,使用控件不仅 带来额外的开销,且缺乏灵活性,那么能否不使用这些控件自己编写代码实现,现 推荐一

1245

webservices:dotnet调用delphi写的cgi

最近写了一个关于dotnet调用delphi写的cgi程序,参考了网上很多网友发的帖子,这里我将大家的内容加上我自己的心得写一篇,让后来像我这样的小虾少走点弯路。  一、用打开Delphi7.0的开发环境,依次选择New | Other | WebServices | SOAP Server Application,然后选择CGI Stand-alone executable

ilovedotnetthandelph的专栏 901

IIS7 CGI 的设置 -- IIS 下运行 Delphi 编译的 CGI 程序

修改 IIS7 设置如下,参考了 Dr. Bob 的:http://www.drbob42.com/examine/examinC3.htm IIS7 安装完后,不能运行 Delphi 编译的 CGI exe 程序。需要做如下设置: 1. 在 IIS7 的管理器里面,选择左边的最顶层的电脑,而不是电脑下的网站,右边才会有 “ISAPI 和 CGI 限制”这个图标。点开,添加一个 C

pcplayer的博客 3020

CGI程序工作原理

     1. 定义      即Common Gateway Interface,它提供一个计算机程序同HTTP协议或者WWW服务的接口,也就是人机交互接口;有了它,服务器可以提供交互式的站点以代替过去静态的文本和图象。CGI通常使用PERL、C/C++、DELPHI等进行编写。     2. 功能    绝大多数的CGI程序被用来解释处理来自表单的输入信息,并在服务器产生相应的

northstar888的专栏 1328

CGI 相关知识

总是在程序中遇到cgi.server_name                        cgi.script_name            然后就好奇什么是cgi,后来发现这些都是cgi在客户向web服务器post,get时候所请求的参数。           具体呢提供下面内容参考http://www.wangchao.net.cn/bbsdetail_21148.htm

lovejavalovejava的专栏 1309

Delphi编写Web Service(实例)(续,用Delphi编写客户端)

继昨天晚上一文:http://blog.csdn.net/yxf/archive/2006/09/28/1303281.aspx ,现在写写用Delphi编写客户端的方法。同样还是调用昨晚的libss.dll。1. 新建个Console Application,叫SampleService.Invoker。2. File->New->Other, Web Services/WSDL Im

Sono simpatico... 3477

深入delphi编程

刚刚接触的delphi的朋友,可能最感兴趣的就是它丰富、强大的vcl(可视化构件库)。仅仅向窗体上扔几个构件,甚至不用动手写代码,就能很容易地做出一个有实用价值的程序,真是令人激动。但是,vcl只是delphi的一小部分,delphi的优秀远远不只是表现在vcl上。如果你仅仅停留在使用vcl这一阶段,那么你永远也不可能成为一个真正的delphi高手。记住,必须超越vcl,才能够接触到delphi

softworkman的专栏 2021

Delphi调试CGI或ISAPI

因为dll文件已驻留内存,可用intrabob进行调试,也可用PWS进行调试,不过要换文件。   IntraBob是资深程序员Dr.Bob编写的免费工具软件,用于测试Delphi编写CGI/WinCGI/ISAPI程序,它可以代替PWS/IIS等WWW服务器软件, 调试本地的CGI/WinCGI/ISAPI程序,其原理是模拟PWS/IIS接受WWW请求, 并根据您的设置将类

踏雪无痕 2776
上一篇: 用Delphi编写CGI程序(五)
下一篇: Delphi开发WEBMAIL程序
zou5655
博客等级 码龄25年 2粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值