79.cgi硬盤查詢個人信息
阿新 • • 發佈:2018-02-20
get == close 分配內存 類型 clas 內容 secure 分享圖片
運行截圖:
- 把cgi編碼轉為char*類型
1 //把cgi編碼轉為char*類型 2 char* change(char *str) 3 { 4 //分配內存 5 char *tempstr = malloc(strlen(str) + 1); 6 7 //x是tempstr的下標,y是str的下標 8 int x = 0, y = 0; 9 char assii_1, assii_2; 10 while (str[y]) 11 { 12 if ((tempstr[x] = str[y]) == ‘%‘) 13 {
- 查詢
1 //查詢 2 void showlist(char str[256]) 3 { 4 5 6 printf("%s%s\n", str,str); 7 //文件指針 8 FILE *pf; 9 //讀取 10 pf = fopen(strpath, "r"); 11 12 if (pf == NULL) 13 { 14 printf("文件打開失敗"); 15 } 16 else 17 { 18 //沒有到文件末尾就繼續 19 while (!feof(pf)) 20 { 21 char readstr[1024] = { 0 }; 22 //讀取一行 23 fgets(readstr, 1024, pf); 24 //字符串查找 25 char *p = strstr(readstr, str); 26 if (p != NULL) 27 { 28 //輸出到網頁 29 //puts(readstr); 30 printf("%s",readstr); 31 puts("<br>"); 32 } 33 } 34 fclose(pf); 35 } 36 }
- 主函數
1 printf("Content-type:text/html\n\n");//換行 2 3 //等待一下 4 system("mkdir 1"); 5 //獲取表單的數據到szpost中 格式 cmd1=%BD%C8&cmd2=abc 6 char szpost[256] = { 0 }; 7 gets(szpost); 8 printf("%s", szpost); 9 10 //找到第一個輸入框的內容 11 char*p1 = strchr(szpost, ‘&‘); 12 if (p1 != NULL) 13 { 14 *p1 = ‘\0‘; 15 } 16 //輸出相應的信息 17 printf("<br>%s", szpost + 5); 18 //cgi編碼格式轉換為char*類型 19 printf("<br>%s", change(szpost + 5)); 20 21 22 //獲取第二個輸入框的內容 23 char *p2 = strchr(p1 + 1, ‘&‘); 24 if (p2 != NULL) 25 { 26 *p2 = ‘\0‘; 27 } 28 printf("<br>%s", p1 + 6); 29 printf("<br>%s", change(p1 + 6)); 30 31 //查詢 32 showlist(change(szpost + 5));
完整代碼
1 #define _CRT_SECURE_NO_WARNINGS 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include <string.h> 5 6 //把cgi編碼轉為char*類型 7 char* change(char *str) 8 { 9 //分配內存 10 char *tempstr = malloc(strlen(str) + 1); 11 12 //x是tempstr的下標,y是str的下標 13 int x = 0, y = 0; 14 char assii_1, assii_2; 15 while (str[y]) 16 { 17 if ((tempstr[x] = str[y]) == ‘%‘) 18 { 19 //獲取第一個字符 20 if (str[y + 1] >= ‘A‘) 21 { 22 assii_1 = str[y + 1] - 55; 23 24 } 25 else 26 { 27 assii_1 = str[y + 1] - 48; 28 } 29 //獲取第二個字符 30 if (str[y + 2] >= ‘A‘) 31 { 32 assii_2 = str[y + 2] - 55; 33 } 34 else 35 { 36 assii_2 = str[y + 2] - 48; 37 } 38 tempstr[x] = assii_1 * 16 + assii_2; 39 40 y += 2; 41 42 } 43 x++; 44 y++; 45 } 46 //最後一位置零 47 tempstr[x] = ‘\0‘; 48 return tempstr; 49 } 50 51 //定義路徑 52 char strpath[256] = "kaifang.txt"; 53 54 //查詢 55 void showlist(char str[256]) 56 { 57 58 59 printf("%s%s\n", str,str); 60 //文件指針 61 FILE *pf; 62 //讀取 63 pf = fopen(strpath, "r"); 64 65 if (pf == NULL) 66 { 67 printf("文件打開失敗"); 68 } 69 else 70 { 71 //沒有到文件末尾就繼續 72 while (!feof(pf)) 73 { 74 char readstr[1024] = { 0 }; 75 //讀取一行 76 fgets(readstr, 1024, pf); 77 //字符串查找 78 char *p = strstr(readstr, str); 79 if (p != NULL) 80 { 81 //輸出到網頁 82 //puts(readstr); 83 printf("%s",readstr); 84 puts("<br>"); 85 } 86 } 87 fclose(pf); 88 } 89 } 90 91 void main() 92 { 93 printf("Content-type:text/html\n\n");//換行 94 95 //等待一下 96 system("mkdir 1"); 97 //獲取表單的數據到szpost中 格式 cmd1=%BD%C8&cmd2=abc 98 char szpost[256] = { 0 }; 99 gets(szpost); 100 printf("%s", szpost); 101 102 //找到第一個輸入框的內容 103 char*p1 = strchr(szpost, ‘&‘); 104 if (p1 != NULL) 105 { 106 *p1 = ‘\0‘; 107 } 108 //輸出相應的信息 109 printf("<br>%s", szpost + 5); 110 //cgi編碼格式轉換為char*類型 111 printf("<br>%s", change(szpost + 5)); 112 113 114 //獲取第二個輸入框的內容 115 char *p2 = strchr(p1 + 1, ‘&‘); 116 if (p2 != NULL) 117 { 118 *p2 = ‘\0‘; 119 } 120 printf("<br>%s", p1 + 6); 121 printf("<br>%s", change(p1 + 6)); 122 123 //查詢 124 showlist(change(szpost + 5)); 125 }
79.cgi硬盤查詢個人信息