a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > Delphi > 正文

用Delphi編寫CGI程序(六)

2019-11-18 18:48:58
字體:
供稿:網(wǎng)友
在 前 面 的 幾 個(gè) 章 節(jié) 里 , 我 們 完 成 了 CGI 程 序 的 一 般 論 述 。 在 此 , 我 給 出 一 個(gè) 簡 單 的 示 范 程 序 作 為 對 以 前 的 內(nèi) 容 的 總 結(jié) 。

 

   要 使 用 這 個(gè) 程 序 , 您 需 要 OmniHTTPD 的 最 新 測 試 版 : OmniHTTPD 2.0b1 (beta 1) for Windows 95/NT 。 如 果 您 沒 有 , 可 以 在 這 里 下 載 ( oh20b1.zip) 。

   安 裝 OmniHTTPD 同 第 一 講 中 的 方 法 一 樣 , 這 里 就 不 再 講 了 。 我 在 這 里 只 講 一 講 這 一 版 本 中 的 一 些 設(shè) 置 問 題 :

   打 開 OmniHTTPD 的 屬 性 設(shè) 置 對 話 框 , 使 用 Web Server Global Setting 按 鈕 , 轉(zhuǎn) 到 External 頁 , 將 .cgi 的 設(shè) 置 刪 除 。 在 未 刪 除 時(shí) , 用 cgi 作 擴(kuò) 展 名 的 CGI 程 序 是 作 為 Perl 程 序 處 理 的 ; 在 我 們 的 課 程 中 , Perl 語 言 的 CGI 程 序 的 擴(kuò) 展 名 是 .pl , 而 編 譯 后 的 CGI 程 序 擴(kuò) 展 名 是 .cgi , 所 以 , 要 將 設(shè) 置 作 這 樣 的 修 改 。

   在 這 個(gè) 版 本 的 OmniHTTPD 中 , 對 SSI(Server Side Include) 命 令 的 支 持 比 以 前 的 版 本 大 大 加 強(qiáng) 了 , 支 持 include 、 exec 等 命 令 。 在 示 范 程 序 中 , 我 用 到 了 這 些 命 令 。

   您 將 (ex8.zip) 下 載 后 , 里 面 包 含 三 個(gè) 文 件 : index.shtml 、 makelog.cpp 和 makelog.exe 。 index.shtml 是 一 個(gè) 包 含 SSI 命 令 的 腳 本 , 請 拷 貝 到 c:httpdhtdocs 目 錄 下 ; makelog.exe 是 CGI 程 序 , 請 拷 貝 到 c:httpdcgi-bin 目 錄 下 ; makelog.cpp 是 makelog.exe 的 源 文 件 , 如 果 您 要 修 改 編 譯 的 話 , 必 須 用 32 位 的 編 譯 器 , 如 VC 等 , 否 則 無 法 使 用 。

   除 此 之 外 , 您 需 要 將 OmniHTTPD 中 的 設(shè) 置 作 一 個(gè) 修 改 : 選 擇 Default Virtual Setting , 在 Server 頁 上 將 Default Index 改 為 index.shtml 。 這 樣 , 當(dāng) 您 在 瀏 覽 器 中 敲 入 http://localhost 時(shí) , OmniHTTPD 自 動 調(diào) 入 index.shtml 。

   再 做 一 個(gè) WEB 文 檔 , 以 index.html 為 文 件 名 存 在 c:httpdhtdocs 目 錄 下 。 您 用 瀏 覽 器 訪 問 localhost 時(shí) , index.shtml 先 調(diào) 用 makelog.exe , 存 儲 用 戶 的 訪 問 信 息 , 再 調(diào) 用 index.html , 將 其 顯 示 在 瀏 覽 器 中 。 用 戶 的 訪 問 信 息 存 儲 在 c:httpdcgi-bin 目 錄 下 的 userlog 文 件 中 。

   這 個(gè) 實(shí) 例 用 到 了 CGI 規(guī) 范 中 基 本 的 環(huán) 境 變 量 和 SSI 技 術(shù) , 請 您 好 好 研 究 一 下 。

   4 、 數(shù) 據(jù) 庫

   在 CGI 的 應(yīng) 用 中 , 數(shù) 據(jù) 庫 方 面 的 應(yīng) 用 是 最 體 現(xiàn) CGI 程 序 強(qiáng) 大 功 能 的 。 在 互 聯(lián) 網(wǎng) 上 , 數(shù) 據(jù) 庫 是 非 常 多 的 , 而 這 些 數(shù) 據(jù) 庫 的 WEB 應(yīng) 用 的 需 求 也 是 越 來 越 多 ( 無 論 是 來 自 公 司 的 還 是 來 自 用 戶 的 需 求 ) 。 可 以 說 , WEB 本 身 就 是 一 個(gè) 巨 大 的 數(shù) 據(jù) 庫 , 如 何 將 這 些 龐 大 的 數(shù) 據(jù) 集 合 有 效 的 組 織 起 來 , 在 WEB 上 進(jìn) 行 發(fā) 布 , 是 CGI 和 數(shù) 據(jù) 庫 系 統(tǒng) 共 同 解 決 的 課 題 。

   如 果 要 對 CGI 和 數(shù) 據(jù) 庫 的 應(yīng) 用 進(jìn) 行 分 類 的 話 , 從 不 同 角 度 有 不 同 的 分 類 方 法 。 例 如 , 按 數(shù) 據(jù) 庫 的 規(guī) 模 可 以 分 成 文 本 數(shù) 據(jù) 庫 、 本 地 數(shù) 據(jù) 庫 (Microsoft access 等 ) 和 數(shù) 據(jù) 庫 服 務(wù) 器 (MS SQL Server 、 Informix 等 ) ; 按 CGI 的 處 理 內(nèi) 容 可 以 分 為 前 端 數(shù) 據(jù) 庫 CGI 程 序 ( 同 使 用 WEB 瀏 覽 器 的 用 戶 交 互 的 CGI 程 序 ) 和 后 端 數(shù) 據(jù) 庫 CGI 程 序 ( 同 數(shù) 據(jù) 庫 交 互 的 CGI 程 序 ) 等 。 選 擇 數(shù) 據(jù) 庫 的 規(guī) 模 通 常 取 決 于 您 要 完 成 的 任 務(wù) 的 數(shù) 據(jù) 量 、 成 本 等 ; 在 編 制 CGI 程 序 時(shí) 采 用 前 端 和 后 端 分 開 還 是 結(jié) 合 通 常 取 決 于 您 的 數(shù) 據(jù) 處 理 的 復(fù) 雜 程 度 等 。

   通 常 , 如 果 您 的 數(shù) 據(jù) 集 合 在 幾 兆 字 節(jié) 之 內(nèi) , 而 且 您 的 數(shù) 據(jù) 記 錄 之 間 沒 有 復(fù) 雜 的 關(guān) 系 , 您 可 以 選 擇 用 文 本 文 件 建 立 數(shù) 據(jù) 庫 , 這 樣 可 以 使 成 本 限 制 在 最 小 , 而 且 文 本 文 件 有 一 個(gè) 數(shù) 據(jù) 庫 管 理 系 統(tǒng) (DBMS , 即 DataBase Management System) 所 沒 有 的 優(yōu) 勢 : 如 果 您 的 數(shù) 據(jù) 發(fā) 生 了 錯(cuò) 誤 , 您 可 以 將 您 的 文 本 文 件 調(diào) 入 任 何 一 個(gè) 文 本 編 輯 器 進(jìn) 行 恢 復(fù) , 而 若 是 您 的 數(shù) 據(jù) 庫 系 統(tǒng) 發(fā) 生 了 錯(cuò) 誤 , 除 非 您 是 一 個(gè) 數(shù) 據(jù) 庫 專 家 , 否 則 很 難 修 復(fù) 。

   如 果 您 的 數(shù) 據(jù) 集 合 非 常 大 , 或 者 您 的 數(shù) 據(jù) 記 錄 之 間 存 在 著 復(fù) 雜 的 關(guān) 系 , 則 最 好 選 用 數(shù) 據(jù) 庫 系 統(tǒng) 。 用 文 本 文 件 實(shí) 現(xiàn) 一 個(gè) 幾 十 兆 的 數(shù) 據(jù) 庫 會 使 任 何 一 臺 高 級 的 RISC 服 務(wù) 器 不 堪 重 負(fù) 。 如 果 您 用 CGI 程 序 處 理 數(shù) 據(jù) 間 復(fù) 雜 的 關(guān) 系 , 必 然 會 使 CGI 程 序 的 復(fù) 雜 性 加 大 , 占 用 過 多 的 服 務(wù) 器 資 源 ; 另 一 方 面 , 利 用 數(shù) 據(jù) 庫 系 統(tǒng) 的 功 能 可 以 簡 化 CGI 程 序 設(shè) 計(jì) 的 難 度 , 提 高 開 發(fā) 效 率 。

   在 選 擇 數(shù) 據(jù) 庫 系 統(tǒng) 時(shí) , 您 需 要 從 以 下 幾 個(gè) 方 面 進(jìn) 行 選 擇 : 一 、 操 作 系 統(tǒng) 平 臺 : 您 應(yīng) 該 選 擇 您 最 熟 悉 的 數(shù) 據(jù) 庫 系 統(tǒng) , 也 要 選 擇 您 最 熟 悉 的 操 作 系 統(tǒng) 平 臺 , 只 有 這 樣 , 才 可 以 少 出 錯(cuò) 誤 。 二 、 價(jià) 格 : 您 應(yīng) 在 各 種 能 完 成 您 的 工 作 的 數(shù) 據(jù) 庫 系 統(tǒng) 中 選 擇 最 便 宜 的 , 在 這 里 , 我 可 以 告 訴 大 家 一 個(gè) 免 費(fèi) 的 數(shù) 據(jù) 庫 系 統(tǒng) , 叫 MiniSQL , 它 必 須 在 UNIX 或 linux 平 臺 上 運(yùn) 行 , 我 還 不 知 道 哪 里 有 Windows 平 臺 的 免 費(fèi) 數(shù) 據(jù) 庫 系 統(tǒng) , 如 果 誰 知 道 , 請 告 訴 我 , 我 會 在 今 后 的 課 程 中 告 訴 大 家 的 。

   我 們 的 課 程 是 講 述 用 Delphi 開 發(fā) CGI 程 序 的 , 而 Delphi 中 提 供 了 Interbase Server 數(shù) 據(jù) 庫 系 統(tǒng) , 因 此 , 我 在 這 里 將 主 要 講 述 采 用 數(shù) 據(jù) 庫 系 統(tǒng) 的 CGI 程 序 開 發(fā) 。 同 時(shí) , 由 于 數(shù) 據(jù) 庫 系 統(tǒng) 減 輕 了 大 量 的 編 碼 工 作 , 我 采 用 前 端 CGI 和 后 端 CGI 合 二 為 一 的 方 式 , 在 一 個(gè) CGI 程 序 中 就 完 成 用 戶 輸 入 處 理 和 數(shù) 據(jù) 庫 操 作 。 但 在 其 他 的 系 統(tǒng) 平 臺 上 , 也 許 這 種 方 式 會 不 使 用 , 請 各 位 讀 者 按 前 面 的 討 論 自 己 斟 酌 。

   在 這 里 , 我 要 附 帶 說 明 一 下 幾 種 不 同 的 CGI 及 其 在 我 們 的 OmniHTTPD 中 的 使 用 差 別 :

   Standard CGI : 標(biāo) 準(zhǔn) CGI , 必 須 放 置 在 /cgi-bin/ 設(shè) 置 的 目 錄 下 , 可 以 在 OmniHTTPD 運(yùn) 行 時(shí) 隨 時(shí) 修 改 。

   Win CGI : 應(yīng) 用 在 Windows 系 統(tǒng) 中 的 CGI , 必 須 放 置 在 /cgi-win/ 設(shè) 置 的 目 錄 下 。 此 CGI 應(yīng) 用 INI 文 件 獲 取 用 戶 端 瀏 覽 器 的 請 求 , 而 不 是 使 用 環(huán) 境 變 量 或 標(biāo) 準(zhǔn) 輸 入 。 我 們 一 般 不 使 用 這 種 CGI 。

   ISAPI : Microsoft 公 司 提 出 的 一 種 應(yīng) 用 動 態(tài) 鏈 接 庫 的 CGI 規(guī) 范 。

   NSAPI : Netscape 公 司 提 出 的 一 種 應(yīng) 用 動 態(tài) 鏈 接 庫 的 CGI 規(guī) 范 。

   這 幾 種 CGI 規(guī) 范 各 有 特 點(diǎn) : 其 中 Standard CGI 可 以 使 用 可 執(zhí) 行 程 序 或 Perl 等 腳 本 語 言 編 寫 , 但 效 率 低 , 占 用 資 源 多 , 每 一 個(gè) CGI 請 求 就 會 有 一 個(gè) CGI 程 序 的 實(shí) 例 在 服 務(wù) 器 中 運(yùn) 行 。 Win CGI 的 特 點(diǎn) 同 Stardand CGI 相 同 。 ISAPI 和 NSAPI 效 率 高 , 常 駐 內(nèi) 存 , 而 且 無 論 有 多 少 個(gè) CGI 請 求 , 在 服 務(wù) 器 中 只 有 一 個(gè) 實(shí) 例 在 運(yùn) 行 , 僅 僅 是 這 個(gè) 實(shí) 例 對 應(yīng) 的 數(shù) 據(jù) 集 合 不 同 ; 但 這 種 CGI 不 易 調(diào) 試 , 因 為 它 必 須 在 WEB 服 務(wù) 器 軟 件 關(guān) 閉 時(shí) 才 可 以 進(jìn) 行 更 新 。

   在 下 一 講 中 , 我 將 給 出 一 個(gè) White Page 的 示 范 程 序 。 White Page 是 一 個(gè) 電 子 郵 件 地 址 的 清 單 , 您 可 以 讓 用 戶 通 過 WEB 瀏 覽 器 對 這 個(gè) 清 單 進(jìn) 行 查 詢 、 編 輯 、 新 增 和 刪 除 等 操 作 。 在 這 一 講 中 , 我 給 出 的 示 范 程 序 僅 僅 是 查 詢 操 作 , 其 他 的 操 作 將 在 以 后 的 課 程 中 講 述 。

   這 個(gè) 示 范 程 序 建 立 在 Borland Interbase Server 數(shù) 據(jù) 庫 上 , 用 Delphi 開 發(fā) 。 在 開 發(fā) 中 , 我 選 擇 的 是 Standard CGI , 因 為 這 樣 容 易 調(diào) 試 。

   我 們 的 程 序 使 用 Stardand CGI 進(jìn) 行 編 寫 , 可 以 方 便 的 調(diào) 試 。 等 調(diào) 試 成 功 后 , 在 Delphi 中 可 以 很 方 便 的 改 成 ISAPI/NSAPI , 僅 僅 是 一 個(gè) 語 句 ( 怎 么 樣 , Delphi 很 不 錯(cuò) 吧 ! ) 。

上一篇:Delphi開發(fā)WEBMAIL程序

下一篇:用Delphi編寫CGI程序(五)

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
學(xué)習(xí)交流
熱門圖片

新聞熱點(diǎn)

疑難解答

圖片精選

網(wǎng)友關(guān)注

主站蜘蛛池模板: 日韩精品在线一区 | 久久久久久久一区 | 91久久精品国产 | 亚洲精选久久久 | 国产成a人亚洲精 | 国产福利91精品一区二区三区 | 另类五月天 | 激情99 | 久久久久综合狠狠综合日本高清 | 欧美成人免费视频 | 逼逼逼网| 免费黄色在线观看 | 久久国产精品久久 | 成人一级视频在线观看 | 91麻豆精品一二三区在线 | 亚洲欧洲一区二区 | 国产精品99久久免费观看 | 久久久久久久91 | 精品久 | 成人免费在线视频观看 | 伊人一二三区 | 久久电影国产免费久久电影 | 亚洲一区在线视频 | 毛片入口| 91高清免费看 | 成年人看的羞羞网站 | 国产日韩亚洲欧美 | 日韩精品在线免费观看 | 亚洲午夜精品一区二区三区他趣 | 日韩视频一区 | 久久99精品久久久久久琪琪 | 国产精品久久久久久一区二区三区 | 免费黄色在线 | 色呦呦在线看 | 久久国产精品99久久久久久老狼 | 青青草久久爱 | 国产九九久久 | 日本一本不卡 | 国产精品99久久免费观看 | 久久久不卡 | 国产精品久久久久久久久动漫 |