2024年1月22日发(作者:)

cgi提交

姓名:


//向文件中写入输入内容

Hp.c

#include

#include

#define MAXLEN 80

#define EXTRA 5

/* 4个字节留给字段的名字"data", 1个字节留给"=" */

#define MAXINPUT MAXLEN+EXTRA+2

/* 1个字节留给换行符,还有一个留给后面的NULL */

#define DATAFILE "../"

/* 要被添加数据的文件 */

int main()

{

int i;

char *lenstr;

char data[MAXINPUT];

long len;

printf("Content-type:text/html;charset=gb2312nn");

printf("cgi test");

printf("");

lenstr = getenv("CONTENT_LENGTH");

if(lenstr == NULL || sscanf(lenstr,"%ld",&len)!=1 || len > MAXLEN)

printf("

表单提交错误

");

else {

FILE *f;

printf("

数据长度为:%ld

",len);

fgets(data, len+1, stdin);

f = fopen(DATAFILE, "a+");

if(f == NULL){

printf("

意外错误,不能够保存你的数据

");

}else{

fputs(data, f);

printf("

恭喜,您的数据已经被保存

");

}

fclose(f);

for(i=0;i

printf("%c",data[i]);

}

}

printf("");

return 0;

}

------------------------------------------------------------------------------

cgi读取文件

这个程序唯一要注意的是:它并没有把 包装成HTML格式后再输出,而是直接作为简单文本(plain text)输出,这只要在输出的头部用text/plain类型代替text/html就可以了,浏览器会根据Content-Type的类型自动的选择相应的处理方法。

要触发这个程序也很简单,因为没有数据要输入,所以只需一个按钮就可以搞定了:

Hp.c

#include

#include

#define DATAFILE "../"

int main()

{

FILE *f = fopen(DATAFILE,"r");

int ch;

if(f == NULL){

printf("Content-type:text/html;charset=gb2312nn");

printf("cgi test");

printf("");

printf("

无法打开文件

");

printf("");

}else{

printf("%s%c%c","Content-Type:text/plain",13,10);

while((ch=getc(f)) != EOF)

putchar(ch);

fclose(f);

}

return 0;

}