1. 程式人生 > >79.cgi硬盤查詢個人信息

79.cgi硬盤查詢個人信息

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         {
    
    14 //獲取第一個字符 15 if (str[y + 1] >= A) 16 { 17 assii_1 = str[y + 1] - 55; 18 19 } 20 else 21 { 22 assii_1 = str[y + 1] - 48; 23 } 24 //獲取第二個字符 25 if (str[y + 2] >=
    A) 26 { 27 assii_2 = str[y + 2] - 55; 28 } 29 else 30 { 31 assii_2 = str[y + 2] - 48; 32 } 33 tempstr[x] = assii_1 * 16 + assii_2; 34 35 y += 2; 36 37 } 38 x++; 39 y++;
    40 } 41 //最後一位置零 42 tempstr[x] = \0; 43 return tempstr; 44 }

  • 查詢
     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硬盤查詢個人信息