(本文为博闻网版权所有,转载必须注明出处。)
本文包括:
  1. 1. 引言
  2. 2. Web服务器
  3. 3. CGI机制
  4. 4. 简单的CGI脚本
  5. 5. HTML表单
  6. 6. 创建真实表单
  7. 7. 总结归纳
  8. 8. 摘要
  9. 9. 了解更多信息
  10. 10. 阅读所有软件类文章

假定您对cgi-bin目录拥有访问权限(请参阅上一节),了解C编程语言PERL,则可以使用CGI执行一系列有趣的试验。让我们从创建最简单的CGI脚本开始。

在网页基础知识一文中,我们研究了可能存在的最简单的HTML网页。这个网页的形式如下:

这个可能存在的最简单的CGI脚本在执行时,将会创建上述的简单的静态页面作为其输出。以下是用C语言编写此CGI程序的形式:

在Web服务器上,将此程序输入到文件simplest.c中,然后通过以下命令进行编译:

(有关如何编译C语言程序的详细信息,请参见C语言入门教程。)

将simplest.cgi放置在cgi-bin目录中,它就可以执行了。您现在就可以通过键入或单击此URL来尝试一下:http://www.howstuffworks.com/cgi-bin/simplest.cgi。您可以看到,该脚本所做的全部工作就是生成显示“Hello there!”的页面。唯一没有预料到的部分就是下面这行内容:

“Content-type:text/htmlnn”这行内容是一段特殊的文本,任何CGI脚本必须首先将它发送给浏览器。只要您记住这一点,就一切ok了。如果您忘记了这一点,则浏览器将拒绝输出脚本。

您可以在PERL中执行相同的操作。将下面这段PERL代码键入到一个名为simplest.pl的文件中:

将该文件放置到cgi-bin目录中。在UNIX计算机上,键入以下内容也许会有用:

这将告知UNIX该脚本是可执行的。您现在就可以通过键入或单击此URL来尝试一下:http://www.howstuffworks.com/cgi-bin/simplest.pl

您现在已经了解了CGI脚本的基本概念。相当简单!实际上就是,执行一个程序,然后将程序的输出发送到调用脚本的浏览器。发送给stdout的正常输出就是发送给浏览器的输出。

不过,CGI脚本的重点在于创建动态内容——每次执行脚本时,输出应该是不同。毕竟,如果每次运行脚本时的输出都是相同的,您也可以使用静态页面。以下C语言程序演示了非常简单的动态内容:

使用一个文本编辑器,将此程序键入到一个名为count.c的文件中。通过键入以下命令对其进行编译:

创建另一个名为count.txt的文本文件,并在其中放入一个零。将counter.cgi和count.txt放置在cgi-bin目录中,即可以运行脚本。您现在就可以通过键入或单击此URL来尝试一下:http://www.howstuffworks.com/cgi-bin/count.cgi。您可以看到,脚本所做的全部工作就是生成一个显示“The current count is:X”的页面。运行一次脚本,其中的X就会递增一次。尝试将脚本运行几次,并注意观察页面内容的变化!

count.txt文件保留当前计数,同时小的incrementcount()函数使count.txt文件中的计数递增。此函数将打开count.txt文件、从中读取数字、递增数字并将其写回到文件中。实际上,此函数会尝试打开文件两次。这样做是为了防止两个用户试图同时访问该文件。这项技术并非万无一失,但对于这类简单情况还是有效的。如果在第二次尝试时无法打开文件,则将为调用者返回错误值-1。更加完善的程序将识别返回值-1,并会生成相应的错误提示。

    gcc count.c -o count.cgi 
 
#include

int incrementcount()
{
FILE *f;
int i;

f=fopen("count.txt", "r+");
if (!f)
{
sleep(1);
f=fopen("count.txt", "r+");
if (!f)
return -1;
}

fscanf(f, "%d", andi);
i++;
fseek(f,0,SEEK_SET);
fprintf(f, "%d", i);
fclose(f);
return i;
}

int main()
{
printf("Content-type:text/htmlnn");
printf("n");
printf("n");
printf("

The current count is:")
printf("%dn", incrementcount());
printf("n");
printf("n");
return 0;
}

chmod 755 simplest.pl
#! /usr/bin/perl
print andquot;Content-type:text/htmlnnandquot;;
print andquot;andlt;htmlandgt;andlt;bodyandgt;andlt;h1andgt;Hello World!andquot;;
print andquot;
nandquot;;
printf("Content-type:text/htmlnn");
gcc simplest.c -o simplest.cgi
#include

int main()
{
printf("Content-type:text/htmlnn");
printf("n");
printf("n");
printf("andlt;h1andgt;Hello there!andlt;/h1andgt;n");
printf("n");
printf("n");
return 0;
}


andlt;h1andgt;Hello there!andlt;/h1andgt;


本文包括:
  1. 1. 引言
  2. 2. Web服务器
  3. 3. CGI机制
  4. 4. 简单的CGI脚本
  5. 5. HTML表单
  6. 6. 创建真实表单
  7. 7. 总结归纳
  8. 8. 摘要
  9. 9. 了解更多信息
  10. 10. 阅读所有软件类文章


 打印  电子邮件  反馈  引用
编辑推荐
软件狗是什么?
软件狗(Software Dog)是一种计算机软件的加密方式,是“硬件加密锁”的
间谍软件工作原理
您的计算机是否曾变得非常慢,即使打开Word处理器也会占用很长时间,间谍软件可能
什么是路由算法?
路由器是管理网络流量和发送数据包的,但是它是如何决定数据包发送的呢?通过本文,博
Gnutella文件共...
Napster在巅峰时期或许是有史以来最受欢迎的网站。紧随其后的文件共享体系架构
主页 |  公司信息 |  广告服务 |  招聘信息 |  隐私 |  联系我们 |  帮助 |  条款和条件