上一页 下一个

18新利最新登入CGI脚本是如何工作的

简单的CGI脚本

假设你可以访问目录的目录(参见上一节),并假设你知道的C编程语言PERL,你可以做很多有趣的实验与CGI脚湿。让我们开始创建最简单的CGI脚本。

在这篇文章中18新利最新登入Web页面是如何工作的,我们检查了最简单的HTML网页。看起来是这样的:

广告

身体< html > < > < h1 >你好!< / h1 > < /身体> < / html >

尽可能简单的CGI脚本将执行,创建这个简单的静态页面的输出。这里是CGI程序18新利最新登入看起来如果你写在C:

# include < stdio。h > int main () {printf (" content - type: text / html \ n \ n”);printf (" < html > \ n ");printf(" <身体> \ n ");printf (" < h1 >你好! < / h1 > \ n”);printf(" < /身体> \ n ");printf (" < / html > \ n ");返回0;}

在我的Web服务器,我进入这个程序到文件simplest.c然后编译:

gcc简单。c - o simplest.cgi

(见18新利最新登入C编程是如何工作的有关编译C程序)。

通过将simplest.cgi目录目录中,它可以被执行。正如你所看到的,所有的脚本并生成一个页面,说,“你好!”的only part that is unexpected is the line that says:

printf (" content - type: text / html \ n \ n”);

线”的content - type: text / html \ n \ n”是特殊的文本,必须首先由任何CGI脚本发送到浏览器。只要你记得,一切都会好的。如果你忘记了,浏览器将拒绝脚本的输出。

你可以在PERL中做同样的事情。这个PERL代码到一个文件中命名类型simplest.pl:

# !/usr/bin/perl打印”的content - type: text / html \ n \ n”;打印”< html > <身体> < h1 > Hello World !”;打印”< / h1 > < /身体> < / html > \ n”;

把文件到你的目录目录。在UNIX机器上,它也可能有助于类型:

chmod 755 simplest.pl

这告诉UNIX脚本是可执行的。

你刚刚看到背后的基本想法CGI脚本。这是真的那么简单!一个程序执行和它输出发送给浏览器,被称为脚本。正常的输出发送到stdout发送到浏览器。

然而,CGI脚本的目的是创造18新利最新登入动态内容——每次脚本执行,输出应该是不同的。毕竟,如果输出是相同的每次运行脚本,那么你不妨使用静态页面。下面的C程序演示了非常简单的动态内容:

# include < stdio。h > int incrementcount(){文件* f;int我;f = fopen(“计数。txt”、“r +”);如果(f){睡眠(1);f = fopen(“计数。txt”、“r +”);如果(!)返回1;}fscanf (f % d”我);我+ +;fseek (f, 0, SEEK_SET); fprintf(f, "%d", i); fclose(f); return i; } int main() { printf("Content-type: text/html\n\n"); printf("\n"); printf("\n"); printf("

The current count is: ") printf("%d

\n", incrementcount()); printf("
Baidu
\n"); printf("\n"); return 0; }

用文本编辑器,输入这个程序到一个文件中命名count.c。编译通过键入:

gcc计数。c - o count.cgi

创建另一个文本文件命名count.txt并将一个零。通过将counter.cgicount.txt目录目录,您可以运行脚本。所有脚本并生成一个页面,说,“当前计数:X,其中X增量曾经每次运行脚本。试着运行它几次,看页面的内容改变!

count.txt文件包含当前计数,小incrementcount ()函数的函数增量计数的count.txt文件。这个函数打开count.txt文件,读取数量,增加的数量和写回文件。实际上这个函数两次试图打开文件。确实,以防两人试图同时访问文件。这当然不是一个简单的技巧,但这个简单的东西它的工作原理。如果文件不能打开第二次尝试,1是错误的值返回给调用者。更复杂的程序会识别1返回值并生成一个适当的错误消息。

Baidu