一个C语言的CGI,用来将POST的数据保存到一个文本里面。打算用来作为 嵌入式的Web配置。
#include
#include
#define MAXLEN 80
/* 4个字节留给字段的名字"data", 1个字节留给"=" */
#define MAXINPUT MAXLEN+2
/* 1个字节留给换行符,还有一个留给后面的NULL */
#define DATAFILE "../data.txt"
/* 要被添加数据的文件 */
void unencode(char *src, char *last, char *dest)
{
for(; src != last; src++, dest++)
if(*src == '+')
*dest = ' ';
else if(*src == '&')
*dest = '\n';
else if(*src == '%')
{
int code;
if(sscanf(src+1, "%2x", &code) != 1)
code = '?';
*dest = code;
src +=2;
}
else
*dest = *src;
}
int main(void)
{
char *lenstr;
char input[MAXINPUT], data[MAXINPUT];
int len = 0,i;
printf("%s%c%c ",
"Content-Type:text/html;charset=gb2312",13,10);
printf("< TITLE >Response< /TITLE > ");
lenstr = getenv("CONTENT_LENGTH");
sscanf(lenstr,"%d",&len);
if(lenstr == NULL || len > MAXLEN)
printf("< P >表单提交错误");
else
{
FILE *f;
fgets(input, len+1, stdin);
unencode(input, input+len+1, data);
f = fopen(DATAFILE, "w");
/*
fprintf(f,"%d\n",len);
fputs(input, f);
*/
if(f == NULL)
printf("< P >对不起,意外错误,不能够保存你的数据 ");
else
fputs(data, f);
fclose(f);
printf("< P >非常感谢,您的数据已经被保存< BR >%s",data);
}
return 0;
}
阅读(1676) | 评论(0) | 转发(0) |