| Perl CGI 程式写作常问问题集(4)程式设计疑难杂症 |
|
Perl CGI 程式写作常问问题集(4)程式设计疑难杂症 |
| 作者:佚名 来源:不详 更新:2006-8-25 21:05:35 错误报告 我要投稿 |
标签,要如何叫出 Perl CGI 程式? 您可以直接去打开该 CGI 程式的 URL:
http://some.machine/cgi-bin/your_program.pl 您也可以在文件中使用连结的方式,例如:
print "Status: 204 No Content\n\n"; print '除非您的浏览器不支援状态码 204 ,否则您不该看到这部份' , "\n"; } else { # # Process Data Here # }
--------------------------------------------------------------------------------
Q4.22: 那些server 回应码 (server response codes)是干什麽用的?有什麽意义? CGI 程式可以传送 server 然後 server 会把它转送给浏览器。例如: 假设您想送 ``No Content'' (意思是告诉浏览器不要再重新下载该网页),那麽您得送一个 204 的回应码(见上例)。
--------------------------------------------------------------------------------
Q4.23: 为什麽 print "Location: http://host/page.html\n" 不 work?又为什麽它只 work 一次,但随後的转向就都弄错了呢? CGI 程式只能送一个 Location 标头。还有,如果您要 server 做转向的 动作您就不该送 MIME 类别。譬如,以下的例子是错误的示范,尽管在有些 servers 上行的通:
#!/usr/local/bin/perl -w
. . . print "Content-type: text/plain\n" print "Location: http://some.machine/some.doc\n\n"";
--------------------------------------------------------------------------------
Q4.24: 要如何让 server 在每个 HTML 网页的底部都自动加上一个:「最近更新日期: ...」的告示?或者,是不是只有 SSI 的网页才能这麽做?CGI 程式的日期要如何取 得? 如果您是透过 CGI 以动态方式来产生您的文件,那麽要插入一个时间标记非常简 单。以下是一例(仅适用於 Perl 5):
$last_updated = localtime; print '最近更新日期: ', "$last_updated\n";
或者是:
require "ctime.pl";
$last_updated = &ctime(time); print '最近更新日期: ', "$last_updated\n";
甚至像这样:
chop($date = `/usr/local/bin/date`); print '最近更新日期: ', "$last_updated\n";
您可以用 SSI 来达到这个效果,像这样:
<--#echo var="LAST_MODIFIED"-->
--------------------------------------------------------------------------------
Q4.25: 什麽样的场合下以 Perl 写 CGI 程式会显得太小题大作,因为用 shell 就可以做到?而什麽样的场合对 Perl 来说又过於困难?用 C++ 做这类的事不是好得多吗?那用 C 呢? 每一个语言都有其长处和短处。相信这句话您听过很多次了。所以一切全看您要做 的是什麽而定。如果您预期正准备写的 CGI 程式每个钟头会有几千几万人次连去 使用,那麽您应该选用 C 或 C++来写。如果您求快的话(指发展所花费的时间而言), 那麽 Perl 是正确的选择!
一般说来,您应避免用 shell 来做任何形式的 CGI 程式设计,因为 shell 在先 天上容易产生安全问题。
|
|
| 文章录入:skyuu 责任编辑:skyuu |
|
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |