📄 perl-cgi-faq.html
字号:
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: <A HREF="http://host/page.html\n"">http://host/page.html\n"</A> 不
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: 为什麽大家都说 <A HREF="http://bigidiot.abuse-me.com/perl.exe?foo.pl">http://bigidiot.abuse-me.com/perl.exe?foo.pl</A>
这样
很危险?会有多糟?
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 (<<A HREF="http://jasper.ora.com/andyo>">http://jasper.ora.com/andyo></A>) 和 Linda Mui
(<<A HREF="http://pcnt1.ora.com>">http://pcnt1.ora.com></A>) (他们很棒!)所写的一段非常好的描述:
【译者】这是原文的第一作者 Shishir G. 指他所写的 CGI Programming
on the World Wide Web (<<A HREF="http://www.ora.com/info/cgi/>">http://www.ora.com/info/cgi/></A>) 一书的编
辑。
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 文件 (<<A HREF="http://hoohoo.ncsa.uiuc.edu/cgi>">http://hoohoo.ncsa.uiuc.edu/cgi></A>)
* Forms 入门指引
(<<A HREF="http://robot0.ge.uiuc.edu/~carlosp/cs317/ft.4-5.html>">http://robot0.ge.uiuc.edu/~carlosp/cs317/ft.4-5.html></A>)
* 许多 CGI 资源结点
(<<A HREF="http://www.cs.oberlin.edu/students/thirdstream/paxtond/cgi_stuff.html>">http://www.cs.oberlin.edu/students/thirdstream/paxtond/cgi_stuff.html></A>)
* 原始的 CGI FAQ (<<A HREF="http://www.best.com/~hedlund/cgi-faq>">http://www.best.com/~hedlund/cgi-faq></A>)
* Perl FAQ (<<A HREF="http://mox.perl.com/perl/faq/index.html>">http://mox.perl.com/perl/faq/index.html></A>)
* 由 Lincoln Stein 所著,一份很完整的WWW 及 CGI 操作安全 FAQ
(<<A HREF="http://www-genome.wi.mit.edu/WWW/faqs/www-security-faq.html>">http://www-genome.wi.mit.edu/WWW/faqs/www-security-faq.html></A>)
* Paul Phillips 所著,CGI 安全 FAQ
(<<A HREF="http://www.cerf.net/~paulp/cgi-security/safe-cgi.txt>">http://www.cerf.net/~paulp/cgi-security/safe-cgi.txt></A>)
* WWW FAQ (<<A HREF="http://boutell.com/faq/>">http://boutell.com/faq/></A>)
【译者】此份 FAQ 的中译版可在
<A HREF="http://www.acer.net/document/cwwwfaq/">http://www.acer.net/document/cwwwfaq/</A>
(<<A HREF="http://www.acer.net/document/cwwwfaq/>">http://www.acer.net/document/cwwwfaq/></A>) 处取得。
以下是由 Cye H. Waldman (<<A HREF="http://wwwiz.com/books/cgi-perl.html>">http://wwwiz.com/books/cgi-perl.html></A>)
所整理的
CGI 和 Perl 书籍一览表*:
【译者】此表由译者更新,同时加入了原文作者 Tom C. 的 Perl 书评
(<<A HREF="http://www.perl.com/perl/critiques/>">http://www.perl.com/perl/critiques/></A>)以供读者参考。请注意:CGI
各书的等级评定乃单就其 Perl 部份的水准及正确性而言。符号说明:
(Tom C. 用骆驼而非星星)
五颗星(****
*) ==> 很棒的书 (terrific books)
四颗星(***
*) ==> 不错的书 (fine books)
三颗星(***) ==> 像样的书 (decent books)
两颗星(**) ==> 马马虎虎、勉强过得去的书 (so-so
books)
一颗星(*) ==> 差劲的书 (poor books)
零颗星(0*) ==> 大烂书 (terrible books)
NA ==> 不适用、无书评 (Not
Applicable/Available)
v4 ==> 内容较老旧,仅含盖 Perl4
-----------------------------------------------------------------------------
+---------------------------------------------------------------------------+
作者 书名 评价 出版者 所附
售价
软体
(美金)
+---------------------------------------------------------------------------+
Effective Perl
Programming: 60 Methods
Joseph Hall and Rules for Scripting NA Addison-Wesley
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -