在c语言写的cgi程序中如何获取URL传递的参数

时间:2022-05-03 06:52:45
在c语言写的cgi程序中如何获取URL传递的参数
例如在
1.html中通下面的js完成页面调转:
<script>
window.location.href = "abc.cgi?name1="+name1+"&name2="+name2+"+"&pass1="+pass1+";
</script>

在abc.cgi程序中如何获取页面传递的name1\name2\pass1的值显示在abc.cgi页面
第二种通过<form action="abc.cgi" method="POST">调转到abc.cgi
 这种情况如何获取name1\name2\pass1的值并显示在abc.cgi页面

------解决方案--------------------
嗯,首先你能确定你要的参数名。 并且知道query-string是这种形式:
para1=val1¶2=val2
那么你可以首先将他们拆开:

 比如要获取$_GET['action'];
char * query_string = "para1=val1¶2=val2¶3=val3";

int main(){
char * str = (char *)malloc(strlen(query_string)+1);
char * index;
memcpy(str, query_string, strlen(query_string)+1);
int i=0;
char * get[100];

while(NULL != (index = strchr(str, '&' ))){
//printf("%s\n", index);
get[i] = (char *)malloc(index-str + 1);
strncpy(get[i++], str, index - str);
strncpy(str, index + 1, strlen(str)-(index-str) + 1);
}
get[i] = (char*)malloc(strlen(str)+1);
strncpy(get[i++], str, strlen(str)+1);
for(int m=0; m<i; m++){
printf("%s\n", get[m]);
free(get[m]);
}
}
~
这样,就会得到形如:
para1=val1
para2=val2
para3=val3
这样的参数。
然后你strchr 等号。。。。。