设为首页 友情链接
在线留言 发表文章
加入收藏 广告联系

刺猬首页

| 专案技术 | 网络技术 | 图形图象 | 网络编程 | 网页设计 | 操作系统 | 服务器 | 技术白皮书 | 在线实验室 | 刺猬论坛 |
小说专版  | 数据库 | 设计赏析 | 存储频道 | 网络安全 | 私服架设 |  Solaris | 网站评估 | PC维护技巧 | 下载中心 | 博 客 |
专   题: | Linux | java | cisco | 防病毒 | 刀片 | SOA | iscsi | ASP.NET | SQL | Oracle |
您现在的位置: IT公社 IT community >> Linux专题 >> Linux 软件开发 >> 教程正文 用户登录 新用户注册
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
Linux内核编译全过程详解…
使用 Pear 的 Log4P 包调…
如何利用程序循环来控制…
Perl教学 Perl5的包和模…
Perl教学 Perl5中的引用…
Perl教学 子程序
Perl教学 模式匹配
Perl教学 列表和数组变量
Perl教学 简单变量
Perl程序设计中常用的函…
  Perl CGI 编程常见问题         
Perl CGI 编程常见问题
 

文体说明: 
 
1. 
译者已就原文中语焉不详、资讯过时,或可作额外补充之处附加注解。这些注解 
 均以星号 (*) 於适当处(通常为句尾)标示。实际的说明文字则大多紧邻星号 
 所在的段落,自成一段。所有注解文字均以「【译者】」起头。 
2. 范例中的 Perl 程式码已由译者适度加以翻译、去除多馀的括弧,并依 
 perlstyle manpages 中所建议的写作格式及习惯稍作修整。 
 
--------------------------------------------------------------------------- 
 
目录: 
 
1.0 -入门简介 
 
Q1.1:  为什麽我的 HTML page/form 需要用 script? 
Q1.2:  CGI 各代表什麽? 
Q1.3:  到底什麽叫 script?我能拿它来能做什麽? 
Q1.4:  什麽是 Perl?为什麽有那麽多人用它来做 CGI? 
Q1.5:  有没有教 CGI 或 Perl 的书或是线上资料? 
Q1.6:  是不是有这方面的邮递论坛 (mailing lists) 或新闻讨论群组? 
Q1.7:  网路上是不是有专门收藏邮递论坛或新闻讨论群组的 posts 的站? 
 
2.0 - Modules (模组) 
 
Q2.1:  我是不是该用 Perl CGI modules 来写 CGI scripts 
?自己做不是比较容 
    易吗? 
Q2.2:  如何知道某个 module 该怎麽个用法? 
Q2.3:  有哪些 Perl4 的 CGI 或 WWW的 libraries ? 
Q2.4:  有哪些给 Perl5 使用的 CGI modules?我该用哪个?为什麽? 
Q2.5:  为什麽这麽多 perl CGI libraries 都是 object-oriented 
(物件导向) 
    的?我对用物件导向来写程式一窍不通。难道就没有简单一点,给不会物 
    件导向的人使用的 libraries 吗?物件导向有多难? 
 
3.0 - CGI 与 WWW Server 
 
Q3.1:  我的 Perl CGI 程式要放在哪里执行?cgi-bin 
这个目录是做甚麽用的? 
Q3.2:  什麽是档案使用权限?怎样改? 
Q3.3:  Perl 应该安装在哪里才可以执行它? 
Q3.4:  我为什麽一直得到 ``Server: Error 500'' 的讯息? 
Q3.5:  我试著打开一个档案,想把资料储存在里头,但是 open() 的指令失败 
    了。到底是怎麽搞的? 
 
4.0 -程式设计疑难杂症 
 
Q4.1:  我想让 user 填的 form 资料自动寄给我,该怎麽做?有没有范例? 
Q4.2:  刚才这个用 form 送信的 script 看起来有点难。为什麽不乾脆用 
    `` URL'',这样 user 填入的资料就可以寄给我了? 
Q4.3:  我要如何在 UNIX 以外的平台上做 Perl-CGI,譬如 Mac、MS-DOS、 
    Windows 及 NT?我的 Perl CGI 程式能不能在这些平台之间互相移植呢? 
    能不能很直接,没有麻烦?我在 UNIX 主机上有帐号,但是都是先在 
    Windows/Mac 上做。我要如何在我自己的机器上测试写好的 CGI scripts 
    ? 
Q4.4:  在 Perl CGI 程式中,STDERR (标准错误讯息)、STDIN 
(标准输入),和 
    STDOUT (标准输出)各是连到何处? 
Q4.5:  如何写计数器? 
Q4.6:  要如何用一个 Perl 的取代指令将所有 HTML 标签从一份文件中删除? 
Q4.7:  要如何知道是谁/哪台机器/哪个浏览器执行了我的程式? 
Q4.8:  人家看得到我的 Perl CGI 
程式吗?如果是这样的话,那不就让他们知道 
    我的程式是怎麽运作的了。这是个安全漏洞吗?我要怎麽把它隐藏起来? 
Q4.9:  我需要将整个 Perl library 都复制到我的 htdocs 目录底下吗? 
Q4.10: 
我为什麽不该叫使用者输入他们的密码或身份证字号或信用卡号码?有一 
    个 TYPE="password" 不是就是拿来做这个的吗? 
Q4.11: 我要如何产生专门替 Netscape 
设计的网页,以别於世上其他的浏览器? 
Q4.12: 为什麽我的 system() 所产生的资料输出顺序不对? 
Q4.13: 我听说 Netscape 会支援 Java。这是不是说我现在得弃 Perl,改Java 
    了?是不是该这麽做? 
Q4.14: 我要如何读取环境变数?为什麽它们有时候会不一样? 
Q4.15: 为什麽我输出的资料被搅乱了(如 ``b < a'' 会被破坏掉)? 
Q4.16: 为什麽我的Perl CGI 程式可以由指令列,却无法从浏览器去执行? 
Q4.17: 为什麽我的 Perl CGI 程式能跑,但是不会把资料写到档案中? 
Q4.18: 要如何做一个会维系状态,或允许【同一使用者】多次连线的 form? 
Q4.19: 如果不从浏览器去执行我的 CGI 程式,要如何替它除错? 
Q4.20: 如果不靠<FORM>标签,要如何叫出 Perl CGI 程式? 
Q4.21: 要如何避免旁人不先填栏位就执行我的 form?他们为什麽一直不断这麽 
    做? 
Q4.22: 那些 server 回应码 (server response codes) 
是干什麽用的?有什麽意 
    义? 
Q4.23: 为什麽 print "Location: http://host/page.htmln" 不 
work?又为什 
    麽它只 work 一次,但随後的转向就都弄错了呢? 
Q4.24: 要如何让 server 在每个 HTML 
网页的底部都自动加上一个:「最近更新 
    日期: ...」的告示?或者,是不是只有 SSI 的网页才能这麽做?CGI 程 
    式的日期要如何取得? 
Q4.25: 什麽样的场合下以 Perl 写 CGI 程式会显得太小题大作,因为用 shell 
    就可以做到?而什麽样的场合对 Perl 来说又过於困难?用 C++ 做这类的 
    事不是好得多吗?那用 C 呢? 
 
5.0 -安全 
 
Q5.1:  以 Perl 写成的 CGI 程式是不是不如以 shell 或 C 写的来得安全? 
Q5.2:  我该特别留意哪些安全事项? 
Q5.3:  为什麽大家都说 http://bigidiot.abuse-me.com/perl.exe?foo.pl 
这样 
    很危险?会有多糟? 
Q5.4:  要如何在程式中安全地使用逆向撇号(backticks,"`")?这麽做: 
    @ans = `grep'$user_field' some.file`; 是不是真的不安全? 
Q5.5:  /$user_variable/ 这个句法是不是 Perl 5 中的一个安全漏洞? 
 
 
--------------------------------------------------------------------------- 
 
1.0 -入门简介 
 
--------------------------------------------------------------------------- 
 
Q1.1: 为什麽我的 HTML page/form 需要用 script? 
 
因为有的时候您需要在 HTML 
文件中使用动态资料(非固定不变的资料)。这包括了 
日期和时间这类的简单资料,或是一个显示「您是第 xxx 
位访客」的计数器。但它 
也可能包括根据使用者输入而得出的大饼图/条统图、资料库搜寻产生的结果,或动 
画等这类的东西。要做出像这样的东西,您唯一的方法是使用 CGI scripts 
(尽管您 
也可以应用客户端程式,如 Java 和 JavaScript 
来达到这个目的,不过那又是完全 
不同的一回事!)。 
 
--------------------------------------------------------------------------- 
 
Q1.2: CGI 各代表什麽? 
 
以下是我的编辑* Andy Oram (<)">http://jasper.ora.com/andyo>) 和 Linda Mui 
(<)/">http://pcnt1.ora.com>) (他们很棒!)所写的一段非常好的描述: 
 
     【译者】这是原文的第一作者 Shishir G. 指他所写的 CGI Programming 
     on the World Wide Web (<)">http://www.ora.com/info/cgi/>) 一书的编 
     辑。 
 
     Common          向您确保 CGI 可以使用多种程式语言并和多种 
                     不同的系统互动。它让您自由选择达到目的的方 
                     法,不把您绑死在单独一种作法之下*。 
     Gateway         提示您 CGI 的力量不在於它本身所做的事,而 
                     在於它提供了连结其他系统的潜力,例如资料库 
                     和图形制造器。 
     Interface       只是表示 CGI 对如何善用其特性提供了明确的 
                     界定-换句话说,您可以设计程式来适当利用这 
                     个介面。 
 
          【译者】似乎有影射 Java 之意。 
 
--------------------------------------------------------------------------- 
 
Q1.3: 到底什麽叫 script?我能拿它来能做什麽? 
 
简单的说,script 
就是程式!好吧、好吧,应该说二者有语意上的差别。如果您真 
的想知道,那麽去买一本电脑程式设计的书来看(或许该说 script 设计 :-) 
)。 
 
您可以藉著写 CGI 程式/script 
变很多魔术。您可以即时制作图形、连结资料库传 
回【查询】结果,还可以连到 Internet 上其他的 servers 去。 
 
--------------------------------------------------------------------------- 
 
Q1.4: 什麽是 Perl?为什麽有那麽多人用它来做 CGI? 
 
答案就在 perl manpage 中的前三行叙述: 
 
     Perl 是一解译式的语言,专为高效率检视文字档案、从中抽取资料,据 
     以印制报表而设计。 
 
绝大多数 CGI 
应用程式的任务都涉及对资料作某种程度的处理,及连结外在程式。 
Perl 恰好提供了好用的工具,让人轻松愉快地达成这些任务。 
 
--------------------------------------------------------------------------- 
 
Q1.5: 有没有教 CGI 或 Perl 的书或是线上资料? 
 
   * NCSA 的 CGI 文件 (<)">http://hoohoo.ncsa.uiuc.edu/cgi>) 

[1] [2] 下一页

频道声明:本频道的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出出处和原始作者 文章版权归本频道与文章作者所有.对于被频道转载文章的个人和网站,我们表示深深的谢意。

原始作者:佚名 录入时间:2007-1-2 3:22:23
信息来源:不详 投稿信箱:itqoo@126.com
教程录入:itqoo    责任编辑:itqoo 
  • 上一个教程:

  • 下一个教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    - 关于我们 - 合作伙伴 - 友情链接 - 广告刊登 - 投稿热线 - 在线留言版权声明联系方式 -
    IT公社版权所有 粤ICP备05127012号
    Copyrigh@2005-2006 itqoo.com.Inc All Rights Reserved  推荐分辨率 1024*768
    联系站长:E-Mail:itqoo@126.com     MSN:urchincc@hotmail.com    QQ:点击这里给我发消息
    特别感谢:亿太网络提供空间支持