cgi中参数都是通过环境变量传递的,那么有哪些环境变量呢?直接上代码吧。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *env_var[] = {
"COMSPEC",
"CONTENT_LENGTH",
"CONTENT_TYPE",
"CONTENT_FILE",
"PATH_INFO",
"PATH_TRANSLATED",
"DOCUMENT_ROOT",
"GATEWAY_INTERFACE",
"HTTP_ACCEPT",
"HTTP_ACCEPT_ENCODING",
"HTTP_ACCEPT_LANGUAGE",
"HTTP_CONNECTION",
"HTTP_HOST",
"HTTP_USER_AGENT",
"PATH",
"QUERY_STRING",
"REMOTE_ADDR",
"REMOTE_PORT",
"REQUEST_METHOD",
"REQUEST_URI",
"SCRIPT_FILENAME",
"SCRIPT_NAME",
"SERVER_ADDR",
"SERVER_ADMIN",
"SERVER_NAME",
"SERVER_PORT",
"SERVER_PROTOCOL",
"SERVER_SIGNATURE",
"SERVER_SOFTWARE",
};
printf("Content-Type: text/html\n\n");
printf("<html>");
printf("<meta http-equiv='Content-Type' content='text/html; charset=gb2312'>");
printf("<body>");
printf("<table>");
for (int i = 0; i < sizeof env_var / sizeof env_var[0]; ++i)
{
printf("<tr>");
printf("<td>%s</td>", env_var[i]);
char *data = getenv(env_var[i]);
if (NULL == data) data = "";
printf("<td>%s</td>", data);
printf("</tr>");
}
printf("</table");
printf("</body>");
printf("</html>");
}
最后结果
COMSPEC | C:\WINDOWS\system32\cmd.exe |
CONTENT_LENGTH | 44 |
CONTENT_TYPE | multipart/form-data; boundary=----WebKitFormBoundarytt3Tg7IONIUdZmGU |
CONTENT_FILE | |
PATH_INFO | |
PATH_TRANSLATED | |
DOCUMENT_ROOT | D:/SoftWare/Apache2.2/htdocs |
GATEWAY_INTERFACE | CGI/1.1 |
HTTP_ACCEPT | text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 |
HTTP_ACCEPT_ENCODING | gzip, deflate |
HTTP_ACCEPT_LANGUAGE | zh-CN,zh;q=0.8,en;q=0.6 |
HTTP_CONNECTION | keep-alive |
HTTP_HOST | 127.0.0.1 |
HTTP_USER_AGENT | Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36 |
PATH | D:\SoftWare\Python34\;D:\SoftWare\Python34\Scripts;D:\SoftWare\Python34;D:\SoftWare\Python34\Scripts;D:\SoftWare\Vim\vim74;D:\SoftWare\Cygwin\CygwinPortable\App\Cygwin\bin;D:\SoftWare\Dev-Cpp\MinGW64\bin;D:\SoftWare\Java\jdk\bin;C:\ProgramData\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\; |
QUERY_STRING | |
REMOTE_ADDR | 127.0.0.1 |
REMOTE_PORT | 12793 |
REQUEST_METHOD | POST |
REQUEST_URI | /cgi-bin/upload.cgi |
SCRIPT_FILENAME | D:/SoftWare/Apache2.2/cgi-bin/upload.cgi |
SCRIPT_NAME | /cgi-bin/upload.cgi |
SERVER_ADDR | 127.0.0.1 |
SERVER_ADMIN | baidu@qq.com |
SERVER_NAME | 127.0.0.1 |
SERVER_PORT | 80 |
SERVER_PROTOCOL | HTTP/1.1 |
SERVER_SIGNATURE | |
SERVER_SOFTWARE | Apache/2.2.25 (Win32) |