国庆放完假一直在忙着写个CGI程序,刚开始的时候,我以为这个东西会很简单,就是update数据到数据库,但是也是让我整了好几天,整完东西后,有些东西我这里想总结一下。
我们获取CGI输入时通过getenv()获取环境变量,下面是几个常用的参数:
getenv("REMOTE_ADDR")获取对端IP地址
getenv("REQUEST_METHOD")获取请求方法,如“GET","POST"
getenv("CONTENT_LENGTH")这个是获取POST方法中参数的长度,这个在POST方法才有用
那如何获取POST方法的数据了,其实我们知道CGI输入输出通过标准的stdin和stdout。所以我们的参数输入可以通过scanf以及fread(,size,1,stdin),这样可以获得缓冲区的数据。
对于CGI程序的输出使用printf()函数,有几项需要注意的
1.因为使用的http,所以要遵循http协议,字段里面要有body长度相关协议头,如:Content-Lengh:
2.其次我们要知道内容格式,所以还要加上content-type
对于CGI还有以下补充
1.权限,调用CGI程序的fastCGI有可能没有权限执行cgi程序,所以这里需要设置权限。
2.关于环境目录,这个也要特别注意有可能,当前目录为fastCGI执行目录,这里需要设置一下,通过readlink函数设置,