?? 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 + -