荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: icefire (懒懒的心懒懒的我), 信区: Program
标 题: [转载] [转寄] 用Perl 语言编写CGI 程序用一例
发信站: BBS 荔园晨风站 (Sun Nov 22 19:16:21 1998), 站内信件
【 以下文字转载自 icefire 的信箱 】
【 原文由 icefire.bbs@melon.gznet.edu.cn 所发表 】
发信人: Anton (庭草无人随意绿), 信区: CGI
标 题: 用Perl 语言编写CGI 程序用一例
发信站: 华南网木棉站 (Wed Nov 18 17:44:01 1998), 转信
北 京 理 工 大 学 计 算 机 科 学 工 程 系 余 波
--------------------------------------------------------------------------------
公 共 网 关 界 面CGI(Common Gateway Interface) 是Internet 上 常 用 的 动
态 技 术 之 一 , 利 用CGI 程 序 , 用 户 、 服 务 器 和 外 部 数 据 库 之 间
就 能 进 行 简 单 的 交 互 通 讯 。 比 如 ,CGI 程 序 允 许WWW 客 户 端 的 浏 览
器 发 送 简 单
的 信 息 给 服 务 器 , 服 务 器 接 到 信 息 并 处 理 之 后 , 可 以 发 送 动 态
文 本 回 浏 览 器 并 显 示 。
一 般 的CGI 可 以 用 在 以 下 几 个 方 面:
通 过 一 个HTML 表 格 , 收 集 有 关 自 己 的WWW 站 点 内 容 的 访 问 者 反 馈
。
在 进 行WEB 查 询 时 , 动 态 地 做 系 统 文 件 的 转 换 。
对Archie 或WAIS 数 据 库 进 行 查 询 , 并 返 回HTML 文 件 格 式 的 结 果 。
CGI 的 标 准 是 由HTTP 的 主 要 作 者George Phillips 、Tony Sander Ari
Luotonenen 和John Franks 制 定 出 来 的 。
用 很 多 种 语 言 都 能 写 出CGI 程 序 , 如Perl 语 言 、C 语 言 、TCL 语
言 、BASIC 语 言 和JAVA 语 言 , 但 是Perl 语 言 是 最 适 合 的 。Perl 是 一 种
解 释 语 言 , 在1980 年 由Larry Wall 发 明 出 来 ,Perl 专 门 用 于 大 量 的
字 串 、 文
字 和 文 件 的 处 理 , 因 此 提 供 了 清 楚 而 简 明 的 方 法 来 解 决CGI 程 序
中 经 常 发 生 的 问 题 。
本 文 通 过 一 个 实 例 介 绍 如 何 用Perl 语 言 进 行CGI 编 程 。 这 是
一 个Internet 地 址 簿 , 格 式 如 下 图 所 示 。 访 问 的 用 户 可 以 在 表 格
中 填 写 姓 名 、E-mail 地 址 、WEB 地 址 等 情 况 , 按 下Add to Addressbook
键 之 后 ,
我 的CGI 程 序 会 将 它 加 入 到 一 个 地 址 簿 中 。
用 户 也 可 以 按 下Display 键 查 看 所 有 的 记 录 , 还 可 以 输 入 关
键 词 并 按 下Start Search 键 进 行 查 询 。
这 个 实 例 包 括 三 个 文 件: 浏 览 器 前 端 的HTML 文 件Addbook.htm 、
CGI 程 序 的 源 文 件Addbook.pl 、 储 存 输 入 数 据 的 文 本 文 件Addbook.txt
。
以 下Perl 源 程 序 的 代 码 , 名 为Addbook.pl:
#! /usr/bin/perl
#perl 编 译 器 所 在 目 录
# Addbook.txt 所 在 的 绝 对 路 径 , 例 如:
http://209.24.16.160/htmlfile/ricky/AddBook.txt
# 该 文 件 在Web Server 上 必 须 可 写 。
$AddBook =" http://209.24.16.160/htmlfile/ricky/AddBook.txt ";
# 输 出 的WEB 页 面 的 顶 部 。 可 按 个 人 爱 好 进 行 编 辑 。
sub header {
print <<"HTML";
HTML
}
#WEB页面的底部。也可按要求进行编辑。
sub footer {
print <<"HTML";
HTML
}
# 此 部 分 如 非 专 家 请 不 要 轻 易 修 改 。
if ($ENV{'REQUEST_METHOD'} eq 'POST')
{
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/,/ /;
$contents{$name} = $value;
}
}
print "Content-type: text/html\n\n";
if ($contents{'act'} eq "add") {
&no_name unless $contents{'name'};
open(BOOK, ">>$AddBook") || &no_open;;
print BOOK "$contents{'na
--------------------------------------------
| 在看得到的地方,我的眼睛和你在一块......
| | 在看不到你的地方,我的心和你在一块...... |
--------------------------------------------
※ 来源:.华南网木棉站 bbs.gznet.edu.cn.[FROM: 202.116.174.100]
--
※ 转寄:.华南网木棉站 bbs.gznet.edu.cn.[FROM: linux.szu.edu.cn]
--
※ 转载:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.0.22]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店