| 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 |
|
上一个教程: Linux程序设计入门 - zlib的运用
下一个教程: const使用详解 |
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |