📄 00000002.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: xcec (money), 信区: Linux <BR>标 题: guestbook-->cgi.h, cgi.cpp <BR>发信站: BBS 水木清华站 (Mon Jan 17 13:04:30 2000) WWW-POST <BR> <BR>//cgi.h
<BR>#ifndef CGI_H
<BR>#define CGI_H
<BR>
<BR>struct NameValue {
<BR> char *name;
<BR> char *value;
<BR>public:
<BR> void decode();
<BR>};
<BR>
<BR>struct CGI {
<BR> int argnum;
<BR> NameValue *namevalue;
<BR> char *buffer;
<BR>public:
<BR> CGI();
<BR>};
<BR>
<BR>#endif
<BR>
<BR>//cgi.cpp
<BR>#include <stdio.h>
<BR>#include <stdlib.h>
<BR>#include <string.h>
<BR>#include "cgi.h"
<BR>#include "myutili.h"
<BR>
<BR>CGI::CGI()
<BR>{
<BR> //buffer
<BR> char *method = getenv("REQUEST_METHOD");
<BR> if (!method) {
<BR> argnum = 0;
<BR> namevalue = NULL;
<BR> buffer = "\0";
<BR> return;
<BR> }
<BR>
<BR> if (0 == strcmp(method, "GET")) { //GET method
<BR> buffer = new char[strlen(getenv("QUERY_STRING"))+1];
<BR> strcpy(buffer, getenv("QUERY_STRING"));
<BR> }
<BR> else if (0 == strcmp(method, "POST")) { //Post method
<BR> int length = atoi(getenv("CONTENT_LENGTH"));
<BR> buffer=new char[length + 1];
<BR> fgets(buffer, length + 1, stdin);
<BR> buffer[length]='\0';
<BR> }
<BR> else {
<BR> argnum = 0;
<BR> namevalue = NULL;
<BR> buffer = "\0";
<BR> return;
<BR> }
<BR>
<BR> if (0 == strlen(buffer)) { //
<BR> argnum=0;
<BR> namevalue=new NameValue[0];
<BR> }
<BR> else { //
<BR> //
<BR> argnum=1;
<BR> char *p=buffer;
<BR> while (*p) {
<BR> if (*p=='&') argnum++;
<BR> p++;
<BR> }
<BR>
<BR> namevalue=new NameValue[argnum];
<BR> int i=0;
<BR> p=buffer;
<BR> //Name-Value pair
<BR> namevalue[0].name=p;
<BR> while (*p) {
<BR> if (*p=='=') {
<BR> *p='\0';
<BR> namevalue[i].value=++p;
<BR> }
<BR> else if (*p=='&') {
<BR> *p='\0';
<BR> namevalue[++i].name=++p;
<BR> }
<BR> else p++;
<BR> }
<BR>
<BR> for (i = 0; i < argnum; i++)
<BR> namevalue[i].decode();
<BR> }
<BR>}
<BR>
<BR>void NameValue::decode()
<BR>{
<BR> int i, j;
<BR> i=j=0;
<BR> while (value[i]) {
<BR> if (value[i] == '+') {
<BR> value[j++] = ' ';
<BR> i++;
<BR> }
<BR> else if (value[i] == '%') {
<BR> value[j++] = char2num(value[i+1])*16 + char2num(value[i+2]);
<BR> i+=3;
<BR> }
<BR> else
<BR> value[j++] = value[i++];
<BR> }
<BR> value[j] = value[i];
<BR>} <BR> <BR>-- <BR>※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.33.162] <BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -