LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 789|回复: 3

大家讨论一个用C写CGI时的get方法问题及目前我的一些总结(完善中。。。)

[复制链接]
发表于 2005-5-11 11:46:57 | 显示全部楼层 |阅读模式
最近开始研究用C写CGI了,尽管没有开始写,但通过读一些代码也有了一些心得,我在用get方法向服务器传递变量时遇到了些问题,如一个很简单的CGI。
[PHP]
#include <stdio.h>

/*
* filename: test.c
*cgi: test.cgi
*/
int main(int argc, char *argv[])
{
  printf("Content-type: text/html\nExpires: 0\n\n");

  printf("argc = %d<br>\n", argc);
  printf("argv[1] = %s\n", argv[1]);

  return 0;
}[/PHP]

编译后,在浏览器中输入test.cgi?var,则输出
argc = 2
argv[1] = var
输入test.cgi?var1&&var2
则输出
argc = 2
argv[1] = var1\&\&var2
也就是说,要想提供多个变量,则必须手动把它们分开了。但接下来有个问题。
当要给变量赋值时,比如输入test.cgi?var=1
则输出
argc = 1
argv[1] = (null)
目前在这个问题上困惑中。。。解决后发表上来,大家也帮帮忙,谢谢。
 楼主| 发表于 2005-5-11 12:00:52 | 显示全部楼层
关于多个变量的问题的解决

要提供多个变量,只须把“&&”改成“+”即可,如输入test.cgi?var1+var2,则输出

argc = 3
argv[1] = var1

将程序修正一下
[PHP]#include <stdio.h>

/*
* filename: test.c
*cgi: test.cgi
*/
int main(int argc, char *argv[])
{
  printf("Content-type: text/html\nExpires: 0\n\n");

  printf("argc = %d<br>\n", argc);
  printf("argv[1] = %s\n", argv[1]);
  printf("argv[2] = %s\n", argv[2]);

  return 0;
} [/PHP]

刷新即可得到
argc = 3
argv[1] = var1
argv[2] = var2
回复 支持 反对

使用道具 举报

发表于 2005-5-16 11:49:23 | 显示全部楼层
我是且getenv()得到QUERY_STRING,然后再作处理。
回复 支持 反对

使用道具 举报

发表于 2005-5-16 12:19:43 | 显示全部楼层
建议看看cgihtml的源码!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表