要进行CGI编程,需要配置一下Web服务器,这里以Apache2.2为例进行说明,关键有两个地方:
(1)ScriptAlias /cgi-bin/ E:/Apache2.2/cgi-bin/
(2)
<Directory E:/Apache2.2/cgi-bin/>
AddHandler cgi-script .cgi .pl
</Directory>
上面,(1)中指定cgi所在的根目录,(2)指定cgi文件的扩展名。详细的配置可以参考:http://www.phpx.com/man/Apache-2/howto/cgi.html
CGI是一种接口,它与Web服务器之间的通信,可以通过各种语言来实现,比较常见的是perl和shell脚本,不过其它语言的也很多。在这里我选择我比较熟悉的c/c++语言来进行说明。下面对上述配置好的环境做一个简单的测试:
以下代码输入 cgi 环境变量
[javascript]
#include <stdlib.h>
#include <stdio.h>
int main ( int argc, char *argv[] )
{
char *env_var[ 24 ] = {
"COMSPEC",
"DOCUMENT_ROOT",
"GATEWAY_INTERFACE",
"HTTP_ACCEPT",
"HTTP_ACCEPT_ENCODING",
"HTTP_ACCEPT_LANGUAGE",
"HTTP_CONNECTION",
"HTTP_HOST",
"HTTP_USER_AGENT",
"PATH",
"QUERY_STRING",
"REMOTE_ADDR",
"REMOTE_PORT",
"REQUEST_METHOD",
"REQUEST_URI",
"SCRIPT_FILENAME",
"SCRIPT_NAME",
"SERVER_ADDR",
"SERVER_ADMIN",
"SERVER_NAME",
"SERVER_PORT",
"SERVER_PROTOCOL",
"SERVER_SIGNATURE",
"SERVER_SOFTWARE"
};
printf ( "%s\n","Content-Type: text/html\n" );
printf ( "%s\n","<?xml version = \"1.0\"?>" );
printf ( "%s\n","<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" " );
printf ( "%s\n","\"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">" );
printf ( "%s\n","<html xmlns = \"http://www.w3.org/1999/xhtml\">" );
printf ( "%s\n","<head><title>CGI环境变量</title></head><body>" );
printf ( "%s\n","<table border = \"0\" cellspacing = \"2\">" );
for ( int i=0;i<24;i++ ) {
printf ( "%s%s%s\n","<tr><td>",env_var[i],"</td><td>" );
char *value = getenv( env_var[i]);
if ( value ) {
printf ( "%s",value );
}
else {
printf ( "%s","CGI环境变量不存在." );
}
printf ( "%s\n","</td></tr>" );
}
printf ( "%s\n","</table></body></html>" );
printf ( "%s\n","C语言编写" );
return EXIT_SUCCESS;
}
[/javascript]