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); }
|