标签将被替换为“%0D%0A”。 信息是按它们在表单里出现的顺序排列的。数据域的名字和数据域的值通过等号(=)字符连在一起。各对名/值再通过“%26;amp;”字符连接在一起。经过这些编码处理之后,表单信号就整个成为一个连续的字符流,里面包含着将被送往服务器的全部信息。 因为表单输入信息都是经过编码后传递给脚本程序的,所以CGI扩展程序在使用这些参数之前必须对它们进行解码。 3.2 CGI外部扩展程序编制 服务器程序可以通过三种途径接收信息:环境变量、命令行和标准输入。具体使用哪一种方法要由[!--empirenews.page--] 它调用的服务器脚本程序是/cgi/bin/cgi_gpio.cgi。CGI扩展程序中FORM表单的解码可参考如下程序: /*function getPOSTvars*/ char **getPOSTvars(){ int i; int content_length; char **postvars; char *postinput; char **pairlist; int paircount=0; chr *nvpair; char *eqpos; postinput=getenv("CONTENT_LENGTH");//获取传送给程序数据的字节数 if(!postinput) exit(); if(!content_length=atoi(postinput))) //获取信息长度 exit(1); if(!(postinput=(char*)malloc(content_length+1))) exit(1); if(!fread(postinput,content_length,1,stadin)) exit(1); postinput[content_length]="0"; for(i=0;postinput[i];i++) if(postinput[i]=="+") postinput[i]=""; //对加易进行处理 pairlist=(char **)malloc(256*sizeof(char **)); paircount=0; nvpair=strtok(postinput,"%26;amp;");//从出现“%26;amp;”字符的位置把信息分段,然后对结果依次处理 while (nvpair){ pairlist[paircount++]=strdup(nvpair); if(!(paircount%256)) pairlist=(char**)realloc(pairlist,(paircount+256)*sizeof(char**)); nvpair=strtok(NULL,"%26;amp;"); } pairlist[paircount]=0; postvars=(char**)malloc((paircount*2+1)*sizeof(char **)); for(i=0;i
如果这篇内容对您有帮助,欢迎点赞支持!