中文版PerlCGI程式写作常问问题集

2008-04-09 04:00:21来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

版本: 1.0
原文作者:
Shishir Gundavaram <shishir@ora.com>
Tom Christiansen <tchrist@perl.com>
文体说明:

译者已就原文中语焉不详、资讯过时,或可作额外补充之处附加注解。这些注解均 以星号 (*) 於适当处(通常为句尾)标示。实际的说明文字则大多紧邻星号所在 的段落,自成一段。所有注解文字均以「【译者】」起头。
范例中的 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 看起来有点难。为什麽不乾脆用 ``mailto: 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.html\n " 不 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 来达到这个目 的,不过那又是完全不同的一回事!)。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:securityofprogramer-3

下一篇:系统调用与函数的区别---学习笔记之一