C/C++编写CGI程序对于form的处理
原创
©著作权归作者所有:来自51CTO博客作者maolv11的原创作品,请联系作者获取转载授权,否则将追究法律责任
1. GET
2. POST
3. 结束
我们有一张web
test.html
<html> <head> <title>form test</title> </head> <body> <form method="get" name="test-get" action="./cgi-bin/test-get.cgi"> <input name="name"><input name="pswd"><input type=submit value="get"> </form> <br><br> <form method="post" name="test-post" action="./cgi-bin/test-post.cgi"> <input name="name"><input name="pswd"><input type=submit value="post"> </form> </body> </html> |
1. GET 首先我们来获取GET方式的form 在环境变量QUERY_STRING里面,存储着GET提交的字符串 cgi-get.c #include <stdio.h> #include <stdlib.h> int main( void ) { fprintf( stdout, "Content-type:text/html\n\n"); fprintf( stdout, "<html><title>get</title>\n"); if( getenv("QUERY_STRING" ) ) { fprintf( stdout, getenv("QUERY_STRING" ) ); } else { fprintf( stdout, "(NULL)\n" ); } fprintf( stdout, "</html>\n" ); return 0; }; |
编译后,复制到cgi-bin目录下,名为test-get.cgi,确保apache用户拥有执行权限 然后登陆test.html,填写dorainm和linux测试get提交方式,获得 2. POST POST是通过标准输入来获取form提交的字符串的 环境变量CONTENT_LENGTH里面,存储着POST提交的字符串的长度 看 test-post.c 的源码 #include <stdio.h> #include <stdlib.h> int main( void ) { int i, n; fprintf( stdout, "Content-type:text/html\n\n" ); fprintf( stdout, "<html><title>post</title>" ); if( getenv("CONTENT_LENGTH") ) { n = atoi( getenv("CONTENT_LENGTH") ); } else { n = 0; fprintf( stdout, "(NULL)" ); } for( i=0; i<n; i++ ) { fputc( getc(stdin), stdout ); } fprintf( stdout, "\n</html>\n" ); return 0; } |
同样,编译后复制到cgi-bin目录下,名为test-post.cgi 测试以POST方式提交guaicat和gnu,可以看到