[[oktatas:web:cgi|< CGI]] ====== CGI C nyelven ====== * **Szerző:** Sallai András * Copyright (c) Sallai András, 2012, 2013, 2015, 2017 * Licenc: GNU Free Documentation License 1.3 * Web: http://szit.hu ==== Szöveg kiírása ==== #include main() { printf("Content-Type: text/html; charset=utf-8\n\n"); pritnf("Helló Világ\n\n"); } Fordítás: gcc -o index.cgi index.c ==== Űrlapfeldolgozás ==== CGI scripteket írhatunk C nyelven is. Az alábbi példában a kliensoldalról átküldött felhasználónév és jelszópárost dolgozzuk fel: Űrlap


#include #include main() { char *adat; char *user; char *pass; adat = (char*) malloc(256 * sizeof(char)); user = (char*) malloc(256 * sizeof(char)); pass = (char*) malloc(256 * sizeof(char)); printf("Content-type:text/html;charset=utf-8\n\n"); adat = getenv("QUERY_STRING"); user = (char*) strtok(adat, "&"); pass = (char*) strtok(NULL, "&"); printf("%s
", user); printf("%s
", pass); }
gcc -o fel.cgi fel.c Az apache webszerveren ha az index.html és fel.cgi /var/www/azonositas könyvtárban van: Options +ExecCGI AddHandler cgi-script .cgi Böngészőben joska felhasználónevet és titok jelszót beírva és a eredményül a következőt kapjuk: user=joska pass=titok ==== Űrlap post metódussal ==== #include #include main() { char *adat; char *user; char *pass; adat = (char*) malloc(4096 * sizeof(char)); user = (char*) malloc(256 * sizeof(char)); pass = (char*) malloc(256 * sizeof(char)); printf("Content-Type: text/html; charset=utf-8\n\n"); //printf("%s%c%c\n", "Content-Type: text/html; charset=utf-8", 13, 10); char *strLen = getenv("CONTENT_LENGTH"); char *endptr; int len = strtol(strLen, &endptr, 10); fread(adat, len, 1, stdin); user = (char*) strtok(adat, "&"); pass = (char*) strtok(NULL, "&"); printf("%s %s \n\n", user, pass); } ==== Egyéb változók ==== printf("%s
\n", getenv("REQUEST_METHOD")); printf("%s
\n", getenv("DOCUMENT_ROOT")); printf("%s
\n", getenv("SCRIPT_NAME")); printf("%s
\n", getenv("CONTENT_TYPE"));
REQUEST_URI = /app/showEnv.exe/uploads/dir1/?name=value&name1=value1 PATH_INFO = /uploads/dir1/ QUERY_STRING = name=value&name1=value1 SCRIPT_NAME = /app/showEnv.exe DOCUMENT_ROOT = C:/Apache2/htdocs PATH_TRANSLATED = C:\Apache2\htdocs\uploads\dir1 DOCUMENT_ROOT = c:/Apache2/htdocs REQUEST_METHOD = POST SCRIPT_FILENAME = c:/Apache2/htdocs/app/showenv.exe SCRIPT_NAME = /app/showEnv.exe CONTENT_TYPE = application/x-www-form-urlencoded CONTENT_LENGTH = 38 QUERY_STRING = REQUEST_URI = /app/showEnv.exe/uploads/dir1/ PATH_INFO = /uploads/dir1/ PATH_TRANSLATED = c:\Apache2\htdocs\uploads\dir1 ==== Metódus vizsgálata ==== if(strcmp(getenv("REQUEST_METHOD"),"GET")) ;