⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 perl-cgi-faq.html

📁 这是一个介绍 linux 编程知识的文章。
💻 HTML
📖 第 1 页 / 共 2 页
字号:
Q4.13: 我听说 Netscape 会支援 Java。这是不是说我现在得弃 Perl,改Java
    了?是不是该这麽做?
Q4.14: 我要如何读取环境变数?为什麽它们有时候会不一样?
Q4.15: 为什麽我输出的资料被搅乱了(如 ``b &lt a'' 会被破坏掉)?
Q4.16: 为什麽我的Perl CGI 程式可以由指令列,却无法从浏览器去执行?
Q4.17: 为什麽我的 Perl CGI 程式能跑,但是不会把资料写到档案中?
Q4.18: 要如何做一个会维系状态,或允许【同一使用者】多次连线的 form?
Q4.19: 如果不从浏览器去执行我的 CGI 程式,要如何替它除错?
Q4.20: 如果不靠&ltFORM&gt标签,要如何叫出 Perl CGI 程式?
Q4.21: 要如何避免旁人不先填栏位就执行我的 form?他们为什麽一直不断这麽
    做?
Q4.22: 那些 server 回应码 (server response codes)
是干什麽用的?有什麽意
    义?
Q4.23: 为什麽 print &quotLocation: <A HREF="http://host/page.html\n&quot">http://host/page.html\n&quot</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,&quot`&quot)?这麽做:
    @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 (&lt<A HREF="http://jasper.ora.com/andyo&gt">http://jasper.ora.com/andyo&gt</A>) 和 Linda Mui
(&lt<A HREF="http://pcnt1.ora.com&gt">http://pcnt1.ora.com&gt</A>) (他们很棒!)所写的一段非常好的描述:

     【译者】这是原文的第一作者 Shishir G. 指他所写的 CGI Programming
     on the World Wide Web (&lt<A HREF="http://www.ora.com/info/cgi/&gt">http://www.ora.com/info/cgi/&gt</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 文件 (&lt<A HREF="http://hoohoo.ncsa.uiuc.edu/cgi&gt">http://hoohoo.ncsa.uiuc.edu/cgi&gt</A>)
   * Forms 入门指引
     (&lt<A HREF="http://robot0.ge.uiuc.edu/~carlosp/cs317/ft.4-5.html&gt">http://robot0.ge.uiuc.edu/~carlosp/cs317/ft.4-5.html&gt</A>)
   * 许多 CGI 资源结点

(&lt<A HREF="http://www.cs.oberlin.edu/students/thirdstream/paxtond/cgi_stuff.html&gt">http://www.cs.oberlin.edu/students/thirdstream/paxtond/cgi_stuff.html&gt</A>)
   * 原始的 CGI FAQ (&lt<A HREF="http://www.best.com/~hedlund/cgi-faq&gt">http://www.best.com/~hedlund/cgi-faq&gt</A>)
   * Perl FAQ (&lt<A HREF="http://mox.perl.com/perl/faq/index.html&gt">http://mox.perl.com/perl/faq/index.html&gt</A>)
   * 由 Lincoln Stein 所著,一份很完整的WWW 及 CGI 操作安全 FAQ
     (&lt<A HREF="http://www-genome.wi.mit.edu/WWW/faqs/www-security-faq.html&gt">http://www-genome.wi.mit.edu/WWW/faqs/www-security-faq.html&gt</A>)
   * Paul Phillips 所著,CGI 安全 FAQ
     (&lt<A HREF="http://www.cerf.net/~paulp/cgi-security/safe-cgi.txt&gt">http://www.cerf.net/~paulp/cgi-security/safe-cgi.txt&gt</A>)
   * WWW FAQ (&lt<A HREF="http://boutell.com/faq/&gt">http://boutell.com/faq/&gt</A>)

          【译者】此份 FAQ 的中译版可在
          <A HREF="http://www.acer.net/document/cwwwfaq/">http://www.acer.net/document/cwwwfaq/</A>
          (&lt<A HREF="http://www.acer.net/document/cwwwfaq/&gt">http://www.acer.net/document/cwwwfaq/&gt</A>) 处取得。

以下是由 Cye H. Waldman (&lt<A HREF="http://wwwiz.com/books/cgi-perl.html&gt">http://wwwiz.com/books/cgi-perl.html&gt</A>)
所整理的
CGI 和 Perl 书籍一览表*:

     【译者】此表由译者更新,同时加入了原文作者 Tom C. 的 Perl 书评
     (&lt<A HREF="http://www.perl.com/perl/critiques/&gt">http://www.perl.com/perl/critiques/&gt</A>)以供读者参考。请注意:CGI
     各书的等级评定乃单就其 Perl 部份的水准及正确性而言。符号说明:
     (Tom C. 用骆驼而非星星)

          五颗星(****
          *)               ==&gt 很棒的书 (terrific books)
          四颗星(***
          *)               ==&gt 不错的书 (fine books)
          三颗星(***)   ==&gt 像样的书 (decent books)
          两颗星(**)     ==&gt 马马虎虎、勉强过得去的书 (so-so
books)
          一颗星(*)       ==&gt 差劲的书 (poor books)
          零颗星(0*)      ==&gt 大烂书 (terrible books)
                  NA         ==&gt 不适用、无书评 (Not
Applicable/Available)
                  v4         ==&gt 内容较老旧,仅含盖 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 + -