아이디 비밀번호 | 회원가입 | 비밀번호분실
   
 새로운소식
 FAQ
 웹프로그램
 웹DB
 웹서버
 웹프로그램수정
 해피칼럼
 골드팁
 
제작의뢰
웹프로그램 판매몰
 
현재위치: 메인 해피포럼 웹프로그램 : 게시물 읽기
  2012-12-02 (00:43:57) from 182.210.37.15
  작성인 : justday 조회수 : 3301   
제목 : cgi 컴파일은 되는데 웹페이지에서 실행이 안되는데 혹시 문제 되는곳 있으시면 찾아주세요.

cgi 컴파일은 되는데 웹페이지에서 실행이 안되는데 혹시 문제 되는곳 있으시면 찾아주시면 감사하겠습니다.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <cgiutil.h> // CGI library 헤더파일
#include <mysql.h> // MySQL library 헤더파일

struct ent {
 // NAME과 VALUE를 위한 구조체
 char name[200];
 char value[200];
};

int main() {
 struct ent a[100];
 int i=0, j, cnt=0, comp1, comp2, check;
 char *en, *en2, *en3;
 char *str;
 char idstr[11], namestr[21];
 long cl;
 MYSQL *conn;
 MYSQL_RES *res;
 MYSQL_ROW tuple;
 char query[300];
 int num_tuples, num_fields;

 // MIME header 전달 및 header와 data 구분
 printf("Content-type:text/html\n\n");
 
 // request method에 의한 구분
 if(!strcmp(getenv("REQUEST_METHOD"), "GET"))
  // request method에 의한 구분 : GET인 경우
  str = getenv("QUERY_STRING");

 else {
  // request method에 의한 구분 : POST인 경우
  en = getenv("REQUEST_METHOD");
  comp1 = strcmp(en, "POST");

  if(comp1 == 0) {
   en2 = getenv("CONTENT_TYPE");
   comp2 = strcmp(en2, "application/x-www-form-urlencoded");

   if(comp2 == 0) {
    en3 = getenv("CONTENT_LENGTH");
    cl = atoi(en3);

    str = (char*) malloc(sizeof(char)*cl);
    
    if(str == NULL) {
     printf("Can't allocated memory!!!\n");
     printf("</body></html>");
     exit(1);
    }
    
    for (i=0; i<cl; i++)
     *(str+i) = getc(stdin);
    
    *(str+i)='\n';
   }
  }
 }

 // 문자열 char *str을 가지고 NAME/VALUE 값을 얻는다.
 for(i=0; str[0]!='\0'; i++){
  cnt++;
  getword(a[i].value, str, '&');
  // 입력 문자열에서 (NAME,VALUE) 쌍을 구별
  unescape_url(a[i].value);
  // %xx는 해당하는 특수 문자로
  plustospace(a[i].value);
  // +는 blank space로
  getword(a[i].name, a[i].value, '=');
  // name=value 쌍에서 value만을 골라낸다
 }
 
 
 // mysql 데이터베이스에 연결한다.
 conn = mysql_init(NULL);
 mysql_real_connect(conn, NULL, "bky89", "kookie1234", "chance", 0, NULL, 0);

 // 만약 연결에 오류가 발생했다면 오류메시지를 출력한 다음에 종료한다.
 if(conn == NULL){
   printf("<body bgcolor='#000000' text='#FFFFFF'>\n");
    printf("<FONT size='+4' face='Comic Sans MS, cursive'><a href='refresh.cgi?initname=%s'>\n");
  fprintf(stderr, "%s", mysql_error(conn));
   printf("</font></body>");
  mysql_close(conn);
  exit(1);
 }

 // Query문을 입력한다.
 sprintf(query,
  "SELECT username FROM user WHERE userid = '%s';", a[0].value);
 check = mysql_query(conn, query);

 // 입력한 Query문에 오류가 발생했다면 오류 메시지를 출력한 후 종료한다.
 if(check != 0) {
    printf("<body bgcolor='#000000' text='#FFFFFF'>\n");
    printf("<FONT size='+4' face='Comic Sans MS, cursive'><a href='refresh.cgi?initname=%s'>\n");
  printf("Select Error<br>%s", mysql_error(conn));
   printf("</font></body>");
  mysql_close(conn);
  exit(1);
 }
 
 // Query 결과를 저장한다.
 res = mysql_store_result(conn);

 // Quert 결과가 제대로 저장되지 않았다면 res를 clear 시키고 연결을 끊고 종료한다.
 if(res == NULL) {
   printf("<body bgcolor='#000000' text='#FFFFFF'>\n");
    printf("<FONT size='+4' face='Comic Sans MS, cursive'><a href='refresh.cgi?initname=%s'>\n");
  printf("%s", mysql_error(conn));
   printf("</font></body>");
  mysql_free_result(res);
  mysql_close(conn);
  exit(1);
 }

 // 몇 개의 tuple를 얻어왔는지 검사한다.
 num_tuples = mysql_num_rows(res);
 
 //복사
 strcpy(idstr, a[0].value);
 strcpy(namestr, tuple[0]);
 
  printf("<body bgcolor='#000000' text='#FFFFFF'>\n");
  printf("<form action='cgi-bin/login.cgi' method='post' target='_top'>\n");
  printf("<table width='100%' border='0'>\n");
  printf("  <tr>\n");
  printf("    <td><FONT size='+4' face='Comic Sans MS, cursive'><a href='refresh.cgi?initname=%s'>JIPSIN</a></FONT></td>\n");
  printf("    <td width='350' align='center' valign='bottom'><font size='3' face='Comic Sans MS, cursive'>\n");
  printf("Welcome <a href='refresh.cgi?initname=%s'>%s</a>!\n", idstr, namestr);
  printf("    </td>\n");
  printf("  </tr>\n");
  printf("</table>\n");
  printf("</form>\n");
  printf("</body>\n");

 //Query 결과를 위한 res 객체를 free 시켜주고 mysql 서버와 연결을 끊은 후 종료한다.
 mysql_free_result(res);

 //mysql 서버와 연결을 끊은 후 종료한다.
 mysql_close(conn);
}



   메모
ralear501
2012-12-04
09:44:44
C언어 소스인것으로 보입니다만,
웹페이지에서 실행안된다는 말씀은 저 소스코드를 웹서버에서 동작시켰을때 실행이 안된다는 말씀이신가요? 구체적인 상황설명 부탁드리겠습니다.

:네맞아요: :화나는군요: :잠와: :우울해: :이건아냐: :왕하하: 왕웃음~ 놀램~

  

 
제목
작성인
조회
등록일
cgi 컴파일은 되는데 웹페이지에서 실행이 안되는데 혹시 문제 되는...
justday
3302
2012-12-02
 



  HOME | 회사소개 | 제작의뢰 | 개인정보취급방침 | CGIMALL | 자료실 | 사이트등록 | 랭킹100 | 포럼 | 초보가이드 | 질문과답변 | 배너광고
Copyrightⓒ1997~2008 HappyCGI All rights reserved
Powered By HappyCGI