oktatas:web:cgi:cgi_c_nyelven
Tartalomjegyzék
CGI C nyelven
- Szerző: Sallai András
- Copyright © Sallai András, 2012, 2013, 2015, 2017
- Licenc: GNU Free Documentation License 1.3
- Web: https://szit.hu
Szöveg kiírása
- index.c
#include <stdio.h> 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:
- index.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Űrlap</title> </head> <body> <form action="fel.cgi" method="get"> <label>Felhasználónév:</label><input type="text" name="user"><br /> <label>Jelszó:</label><input type="password" name="pass"><br /> <input type="submit" value="Bejelentkezés" /> </form> </body> </html>
- fel.c
#include <stdio.h> #include <stdlib.h> 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<br>", user); printf("%s<br>", pass); }
gcc -o fel.cgi fel.c
Az apache webszerveren ha az index.html és fel.cgi /var/www/azonositas könyvtárban van:
<Directory /var/www/azonositas> Options +ExecCGI AddHandler cgi-script .cgi </Directory>
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
- fel.c
#include <stdio.h> #include <stdlib.h> 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<br>\n", getenv("REQUEST_METHOD")); printf("%s<br>\n", getenv("DOCUMENT_ROOT")); printf("%s<br>\n", getenv("SCRIPT_NAME")); printf("%s<br>\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
oktatas/web/cgi/cgi_c_nyelven.txt · Utolsó módosítás: 2019/08/22 20:46 szerkesztette: admin