#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char *content_length_str;
int content_length = 0;
char input_data[1024] = {0};
char name[100] = {0};
char message[500] = {0};
char *token;
// 1. HTTP 헤더 출력 (CGI의 핵심: 헤더 뒤 빈줄 필수!)
printf("Content-type: text/html; charset=euc-kr\n\n");
// 2. 환경변수에서 POST 데이터의 길이를 가져옴
content_length_str = getenv("CONTENT_LENGTH");
if (content_length_str != NULL) {
content_length = atoi(content_length_str);
// 표준 입력(stdin)으로부터 웹 브라우저가 보낸 Raw 데이터 읽기
// 데이터 형태 예시: userid=홍길동&message=안녕하세요
fread(input_data, 1, content_length, stdin);
} else {
printf("<html><body><h2>[오류] 데이터가 전송되지 않았습니다.</h2></body></html>\n");
return 1;
}
// 3. 문자열 파싱 (Parsing)
// '&' 기호를 기준으로 각 필드를 쪼갬
token = strtok(input_data, "&");
while (token != NULL) {
if (strncmp(token, "userid=", 7) == 0) {
strcpy(name, token + 7);
} else if (strncmp(token, "message=", 8) == 0) {
strcpy(message, token + 8);
}
token = strtok(NULL, "&");
}
// 4. HTML 동적 생성 및 출력
printf("<html>\n");
printf("<head><title>결과 화면</title></head>\n");
printf("<body bgcolor=\"#C0C0C0\">\n");
printf("<center>\n");
printf(" <h2><font color=\"darkred\">★ 전송 완료 완료! ★</font></h2>\n");
printf(" <hr size=\"2\" width=\"50%%\">\n");
printf(" <p><b>%s</b> 님이 남기신 말씀:</p>\n", name);
printf(" <table border=\"1\" bgcolor=\"#FFFFFF\" width=\"60%%\">\n");
printf(" <tr><td><font color=\"green\">%s</font></td></tr>\n", message);
printf(" </table>\n");
printf(" <br><br>\n");
printf(" <a href=\"/index.html\">[ 홈으로 돌아가기 ]</a>\n");
printf("</center>\n");
printf("</body>\n");
printf("</html>\n");
return 0;
}
틀림
해당 댓글은 삭제되었습니다.
@guiyom.org 응 PHP-FPM 써 (FastCGI Process Manager)
따지고 보면 이게 C로 웹도 하는 프붕이의 이상향