#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;

}