晚辈今天试了几个简单的CGI程序,用C写的,在VC++控制台里面编译。似乎用CGI做网页,HTML都嵌入在CGI里面,而不是像ASP PHP等HTML嵌代码。这样似乎功能性的东西能实现,但页面表现形式实现起来就很累。
请问:
1,诸位用CGI做网页,一般是怎么处理好HTML表现与CGI程序的?
2,有没有将代码和页面分离的方法,比如请求一个CGI程序,开始做计算处理,最后载入一个独立的HTML页面,将HTML页面上的标识符替换成CGI计算出来的东东。有没有类似这样的开发模式,如果有的话请指教一二
多谢了。
------解决方案--------------------
<html>
<head>
<title> just an example </title>
</head>
<body>
<form action= "/cgi-bin/cgitest " method= "get ">
<p> 请在下面填入乘数和被乘数,按下确定后可以看到结果。 </p>
<p> <INPUT NAME = "m " SIZE= "5 "> </p>
<INPUT NAME= "n " SIZE= "5 "> <BR>
<p> <INPUT TYPE= "SUBMIT " VALUE= "确定 "> </p>
</form>
</body>
</html>
这是html页面
以下是cgi程序 保存为cgitest.c。将其编译为可执行文件放入../cgi-bin/目录下即可。
# include <stdio.h>
# include <stdlib.h>
int main()
{
char *data;
long m,n;
printf( "Content-Type:text/html \r\n\r\n ");
printf( " <html> <head> \n ");
printf( " <title> hello world </title> \n ");
printf( " </head> \n ");
printf( " <body> \n ");
printf( " <h1> hello world </h1> \n ");
data = getenv( "QUERY_STRING ");
if(sscanf(data, "m=%ld&n=%ld ",&m,&n)!=2)
printf( " < P > 错误!输入数据非法。表单中输入的必须是数字。 </p> ");
else
printf( " < P > %ld和%ld的成绩是:%ld。 ",m,n,m*n);
printf( " </body> </html> \n ");
return 0;
}
就可以实现一个乘法的简单页面
------解决方案--------------------
试试 CSP/eybuild, 它是你要的工具.
http://www.eybuild.com
示例下载:
http://www.eybuild.com/develop/download.htm
Good Luck!
------解决方案--------------------
shtml?c语言的cgi没学过,perl的弄过,那个不知道是不是你想要的,和asp.net不是太一样,不过是先计算后输出的。shtml可以直接 <!--#exec cgi="text.cgi"-->来执行包含文件,具体的可以去看下<如何在html中嵌入cgi程序>
这个帖子,下面有我的回复。
------解决方案--------------------
我对C不太熟悉。
做CGI用的最多的是perl语言,在perl于严重可以使用一些模版模块。
例如:HTML::KTemplate
http://search.cpan.org/~kasper/HTML-KTemplate-1.33/KTemplate.pm
可以将网页HTML做成一个模版文件,然后程序进行数据的处理,完成后,设定好模板中的关键字,加载模版就可以生成漂亮的html输出了。
我估计C语言应该能有类似的工具。