社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
在POST方法下,CGI程序可以直接从服务器的标准输入中获取数据,不过要先从CONTENT_LENGTH这个环境变量中得到POST参数的长度,然后再读取相应长度的内容。
先弄个post.html,并放到htdocs目录下。
<html>
<head>
<title>CGI POST</title>
</head>
<body>
<tr>
<td>
<div>Method:POOST</div>
<div>Please input two number:</div>
<form method="post" action="/cgi-bin/post">
<input type="txt" size="3" name="m">*
<input type="txt" size="3" name="n">=
<input type="submit" value="result">
</form>
</td>
</tr>
</body>
</html>
代码如下:
#include <iostream>
#include <stdlib.h>
#include <string>
#include <vector>
#include <stdio.h>
int post_method()
{
std::cout<<"Content-type:text/htmlrnrn";
std::cout<<"<html>n";
std::cout<<"<head>n";
std::cout<<"<title>Testing Post</title>n";
std::cout<<"</head>n";
std::cout<<"<body>n";
std::cout<<"get parameter:<br/>";
char *lenstr = getenv("CONTENT_LENGTH");
if(lenstr == NULL)
{
std::cout<<"Error, CONTENT_LENGTH should be entered"<< "<br/>";
}
else
{
int len = atoi(lenstr);
char poststr[20];
fgets(poststr, len + 1,stdin);
std::cout<<"poststr:"<< poststr<<"<br/>";
char m[10];
char n[10];
if(2 != sscanf(poststr,"m=%[^&]&n=%s",m,n))
{
std::cout<<"Error:Parameters are not right!<br/>";
}
else
{
std::cout<<"m*n="<<atoi(m)*atoi(n)<<"<br/>";
}
}
std::cout<<"</body>n";
std::cout<<"</html>n";
return 0;
}
int main()
{
post_method();
return 0;
}
编译:
g++ 2.cpp -g -o post
拷贝:
cp /share/post cgi-bin/
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!