1. 程式人生 > >cgi獲取所有環境變數[C語言]

cgi獲取所有環境變數[C語言]

Username:  
Password: 
 

cgi程式原始碼:

/* env.c */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_CONTENT_LEN        1024

int main()
{
    extern char   **environ;
    int nlen = 0;
    int i;
    char szContent[MAX_CONTENT_LEN];
    char **penv;
    char *req = NULL;

    memset(szContent, 0, MAX_CONTENT_LEN);
        
    printf("Content-type: text/html\n\n");
    
    for ( penv = environ; *penv; penv++ )
        printf("%s<br>", *penv);

    if ( strcmp("POST", getenv("REQUEST_METHOD")) == 0 )
    {
        nlen = atoi(getenv("CONTENT_LENGTH"));
        for (i = 0; i < nlen; i++ )    
        {
            if ( i < MAX_CONTENT_LEN )
                szContent[i] = fgetc(stdin);
            else
                break;
        }
        printf("<p>%s</p>", szContent);
    }
    else
    {
        printf("<p>%s</p>", getenv("QUERY_STRING"));
    }
    return 0;
}

在位址列 http://localhost/testenv.htm
假設我們輸入的使用者名稱和密碼分別為abcd和efgh,提交表單之後,在我的機器上顯示的結果如下:

COMSPEC=C:\WINDOWS\system32\cmd.exe
CONTENT_LENGTH=31
CONTENT_TYPE=application/x-www-form-urlencoded
DOCUMENT_ROOT=d:/chateaurt4/www
HTTP_ACCEPT=text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
HTTP_ACCEPT_CHARSET=gb2312,utf-8;q=0.7,*;q=0.7
HTTP_ACCEPT_ENCODING=gzip,deflate
HTTP_ACCEPT_LANGUAGE=zh-cn,zh;q=0.5
HTTP_CONNECTION=keep-alive
HTTP_HOST=localhost
HTTP_KEEP_ALIVE=300
HTTP_REFERER=http://localhost/testenv.htm
HTTP_USER_AGENT=Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3
PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;D:\Microsoft Visual Studio\Common\Tools\WinNT;D:\Microsoft Visual Studio\Common\MSDev98\Bin;D:\Microsoft Visual Studio\Common\Tools;D:\Microsoft Visual Studio\VC98\bin;D:\AppServ\Apache2.2\bin;D:\AppServ\php5;D:\AppServ\MySQL\bin
REMOTE_ADDR=127.0.0.1
REMOTE_PORT=1644
SCRIPT_FILENAME=d:/chateaurt4/www/cgi-bin/env.cgi
SERVER_ADDR=127.0.0.1
[email protected]

SERVER_NAME=localhost
SERVER_PORT=80
SERVER_SIGNATURE=

相關推薦

cgi獲取所有環境變數[C語言]

Username:   Password:   cgi程式原始碼: /* env.c */ #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_CONTENT_LEN        1

C++獲取系統環境變數

TCHAR szOutBuf[MAX_PATH] = {0}; GetEnvironmentVariable( _T("ProgramFiles"), szOutBuf, MAX_PATH - 1 ); TCHAR szOutBuf2[MAX_PATH] = {0}

[遞迴] 排列組合 - 從一個字串中任意選取N個元素構成的所有排列組合 - C語言

排列組合 【題目】求從字串中"ABCD"中任取3個元素構成的所有排列組合 A

linux下getenv、putenv、setenv獲取設定環境變數

getenv(取得環境變數內容)  相關函式 putenv,setenv,unsetenv  表頭檔案 #include<stdlib.h>  定義函式 char * getenv(const char *name);  函式說明 getenv()用來取得引數n

C獲取系統時間】C語言獲取系統時間的幾種方式

C 語言中如何獲取時間?精度如何? 1 使用 time_t time( time_t * timer ) 精確到秒 2 使用 clock_t clock() 得到的是 CPU 時間 精確到 1/CLOCKS_PER_SEC 秒 3 計算時間差使用 double difftime( time_t tim

【程式】Windows下根據計算機名獲取IP地址的C語言程式

方法一(當指定的裝置不存在時,有可能返回的是本機的IP地址,所以不建議使用): #include <stdio.h> #include <WinSock2.h> #pragm

Windows下顯示所有環境變數

我們在開發過程中,經常需要確認某一個環境變數的實際情況,與其使用各種echo命令去查,不如直接輸出。 其實很簡單,自己寫個程式,呼叫一個Win32的API就搞定了,不過我考慮到一些安全性問題,做了一點點改進: #include <windows.h> #inc

linux 環境c語言實現mysql資料庫圖片的儲存以及多資料庫直接的轉存

作為一個程式設計師,CSDN對我的程式設計帶來了很多幫助和提高,在這裡可以讓你找到很多開發過程中遇到的問題的解決辦法,今天也寫點自己積累的東西跟大家分享一下,希望對需要的人有幫助. 資料背景:         之前專案一直使用Oracle資料,最近換工作,公司使用的為

PowerShell獲取系統環境變數的方法

本文介紹在PowerShell中,如何獲取環境變數的值。可以列出所有的環境變數,也可以指定通過變數名稱來獲取環境變數的值。 在開發過程中,經常需要用到環境變數(比如當前計算機名、登入的使用者名稱、Path環境變數等),那麼在PowerShell中如何知道有哪些

聯發科Linkit 7688 (一) 上手及在Mac下搭建OpenWrt交叉編譯環境C語言編譯Hello,World

Linkit 系列博文: 淘了一塊聯發科 Linkit 7688 DUO 開發板(99元)。 這是一塊物聯網開發板,基於聯發科 Linkit 7688晶片、同時相容Arduino. 內建OpenWrt系統、支援Wifi聯網,用於開發智慧路由器、智慧物體等。

System.getProperties()獲取系統環境變數

System.getProperty("user.dir")//獲取當前資源路徑 是工作中經常遇到的,那如何獲取所有的系統變數呢?通過System.getProperties()就可以了 public static void main(String[] args) thr

Linux菜鳥的入門-終端環境C語言程式設計

       在Linux的終端環境中進行C語言程式的編寫需要用到Vi編輯器。vi編輯器是Linux系統下標準的編輯器.而且不遜色於其他任何最新的編輯器.在此編輯器中就可以進行C語言程式的編寫。      首先建立一個.C檔案。比如:“vi linnash.c”;    

關於環境變數 C++ include搜尋路徑,lib庫搜尋路徑

OneCoder在學習C++的過程中,在研究Windows下Eclipse for C/C++開發環境的過程中遇到的一些關於C++環境變數的一些問題。在網上搜索一番,得到下面的文章,與大家分享。 轉自:http://blog.sina.com.cn/s/blog_93b4

linux環境C語言實現非阻塞方式讀取字串資料的串列埠測試程式,即串列埠工具的編寫

一、前言 1.1 關於串列埠測試工具,網上已經有整合好的應用程式提供大家使用,但其只提供功能介面,內部具體怎麼實現的還需要自己去探索; 1.2 關於串列埠通訊的測試程式在網上已經是數見不鮮,但也不排除很多是直接“參考”別人的(ctrl+c),而且很多程式

獲取時區方法(C語言實現)

本文首先普及一下時區以及各種時間的含義。 如果不需普及直接跳到最後的程式碼,為獲取時區的C語言程式碼。 時區         咱們一起回憶一下中學的地理知識,地球是自西向東自傳逆時針自傳,自西向東逆時針公轉。所以陽光總是自東向西掃過,也就是我們常說的太陽東昇西落。   

linux C語言環境變數env/getenv獲取

#include <stdio.h>             #include <string.h>             int main()             {              extern char** environ;              printf

C語言獲取當前時間(Linux環境下,VC6.0,Codeblock環境下通用)

在Linux環境下用C語言編寫程式獲取當前的時間只要呼叫其內部的函式即可。這些函式在 time.h 這個標頭檔案裡,第一個函式原型: ① time_t time(time_t *t),通過Linux的man也很方便能夠找到這個函式的相關說明: 在Linux環境的命令列模式中輸入 man 2 time即

C++:getenv & setenv -- 獲取&設定系統環境變數

1. getenv:取得環境變數內容標頭檔案- #include<stdlib.h> 格式: char * getenv(const char *name); 意義: getenv()用來取得引數name環境變數的內容。 @param name為環境變數的名稱,如果該變數存在則會

C語言獲取一個數二進位制所有偶數位和奇數位分別輸出二進位制序列

獲取一個數二進位制中所有偶數位和奇數位; //#include<stdio.h> //#include<stdlib.h> //二進位制數的奇數位和偶數位的輸出;right; //int main() //{ // int

基於visual c++之windows核心程式設計程式碼分析(21)獲取和設定環境變數

環境變數是一個具有特定名字的物件,它包含了一個或者多個應用程式所將使用到的資訊。例如path,當要求系統執行一個程式而沒有告訴它程式所在的完整路徑時,系統除了在當前目錄下面尋找此程式外,還應到path中指定的路徑去找。使用者通過設定環境變數,來更好的執行程序。 環境變數一