程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> CGI編程學習----查詢2000W開房數據,

CGI編程學習----查詢2000W開房數據,

編輯:關於C語言

CGI編程學習----查詢2000W開房數據,


0x01:什麼是CGI編程?

CGI:Common Gateway Interface

CGI代表Common Gateway Interface(通用網關界面),它使在網絡服務器下運行外部分應用程序(或網關)成為可能。

CGI-BIN 目錄是存放CGI腳本的地方。

這些腳本使WWW服務器和浏覽器能運行外部程序,而無需啟動另一個原因程序。

它是運行在Web服務器上的一個程序,並由來自於浏覽者的輸人觸發。CGI是在HTTP服務器下運行外部程序(或網關)的一個接口,它能讓網絡用戶訪問遠程系統上的使用類型程序,就好像他們在實際使用那些遠程計算機一樣。 CGI能夠讓浏覽者與服務器進行交互,如果你曾經遇到過在網絡上填表或者進行搜索,就很有可能就是用的CGI。

 

0x02:用什麼語言可以編寫CGI編程?

CGI應用程序可以由大多數的編程語言編寫,如Perl(Practical Extraction and Report Language)、C\C++、Java 和Visual Basic等。不過對於那些沒有太多編程經驗的網頁制作人來說,實在是一個不小的難題(測試CGI程序需要html測試文件)。

 

0x03:CGI應用程序的工作原理

1.浏覽器通過HTML表單或超鏈接請求指上一個CGI應用程序的URL。

2.服務器收發到請求。

3.服務器執行指定所CGI應用程序。

4.CGI應用程序執行所需要的操作,通常是基於浏覽者輸人的內容。

5.CGI應用程序把結果格式化為網絡服務器和浏覽器能夠理解的文檔(通常是HTML網頁)。

6.網絡服務器把結果返回到浏覽器中。

 

0x04:CGI程序實現

C語言實現代碼:

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 
 5 char from_hex(char ch)
 6 {
 7     return isdigit(ch) ? ch - '0' : tolower(ch) - 'a' + 10;
 8 }
 9 
10 char * gb2312_to_chinese(char *gb2312)//將gb2312編碼轉換為漢字
11 {
12     if (strstr(gb2312, "%"))
13     {
14         char *buf = (char *)malloc(strlen(gb2312) + 1);
15         char *pstr = gb2312;
16         char *pbuf = buf;
17         while (*pstr)
18         {
19             if (*pstr == '%')
20             {
21                 if (pstr[1] && pstr[2])
22                 {
23                     *pbuf++ = from_hex(pstr[1]) << 4 | from_hex(pstr[2]);
24                     pstr += 2;
25                 }
26             }
27             else if (*pstr == '+')
28             {
29                 *pbuf++ = ' ';
30             }
31             else
32             {
33                 *pbuf++ = *pstr;
34             }
35             pstr++;
36         }
37         *pbuf = '\0';
38         return buf;
39     }
40 }
41 
42 void main()
43 {
44     printf("Content-type:text/html \n\n");//HTML語言
45     char searchstr[256] = "";
46     gets(searchstr);//從浏覽器獲得輸入
47     char *p = strchr(searchstr, '&');//處理從浏覽器獲取的輸入,去掉多余的部分 searchstr[256] = "我們的輸入&%ds%ads%fadsa8d8hd"
48     if (p != NULL)
49     {
50         *p = '\0';
51     }
52     char *pstart = searchstr + 10;
53     pstart = gb2312_to_chinese(pstart);//從浏覽器獲取到的輸入時改變312編碼方式 需要轉換成漢字 才能進行查找
54     int j = 0;
55     char pathr[200] = "kaifang.txt";
56     FILE *pfr = fopen(pathr, "r");//打開開房數據
57     if (pfr == NULL)
58     {
59         puts("打開失敗");
60         return;
61     }
62     else
63     {
64         while (!feof(pfr))
65         {
66             char buffer[256] = { 0 };
67             fgets(buffer, 256, pfr);
68             char *p = strstr(buffer, pstart);
69             if (p != NULL)
70             {
71                 j++;//計數器
72                 puts(buffer);
73                 puts("<br><br>");//換行
74             }
75         }
76         puts("<br><br>");//換行
77         printf("找完了,找到 %d 個 %s ", j, pstart);
78         puts("<br><br>");//換行
79         puts("<br><br>");//換行
80     }
81 }

測試CGI程序所用的html文件:

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
 5 <title>酒店開房記錄查詢</title>
 6 <style>
 7     a:visited{color:#0000FF;}
 8     #div{width:600px;margin:0 auto};
 9 </style>
10 </head>
11 <body>
12 <div id="div">
13 <table >
14     <tr>
15         <td>
16             <p align="center"><img src="logo.gif" width="270" height="129" usemap="#mp"/></p>
17         </td>
18     </tr>
19     <tr>
20     <td>
21     <p align="center">
22 <form id = "form"  name = "form" method = "post" action = "http://127.0.0.1/cgi-bin/xxoo.cgi">
23     <input type="text" name="searchstr"  placeholder="請輸入你的那個他(她),看看有沒有出軌"/>
24     <input type="submit" name="sousuoanniu" value="猥瑣一下"  />
25 </p>
26     </td>
27     </tr>
28         <tr>
29  <tr>
30  <tr>
31  <tr>
32         <td>
33             <p align="center">
34             <font size="2">酒店開放記錄查詢 已經總共2000萬用戶信息洩漏</font>
35 
36             </p>
37             <br>
38             <br>
39  <br>
40  <br>
41  <br>
42  <br>
43  <br>
44             <p align="center">
45             <font  size="2">
46                 友情提醒:數據來源於網絡僅供參考,使用時請遵守當地法律法規
47                 
48             </font>
49             </p>
50         </td>
51     </tr>
52 </table>  
53 </div>
54 </body>
55 </html>

0x05:測試效果

環境:Apache2.2,WIN8.1

找到Apache的安裝目錄將寫好的CGI程序生成為.exe可執行程序,將後綴改為.cgi然後放在Apache 2.2\cgi-bin目錄下

將測試CGI程序所用的html文件放在Apache 2.2\htdocs目錄下

 

效果:

 

 

0x06:注意

printf("Content-type:text/html \n\n");//HTML語言
此行通過標准輸出將字符串″Contenttype:text/plain/n/n″傳送給Web服務器。它是一個MIME頭信息,它告訴Web服務器隨 後的輸出是以純ASCII文本的形式。請注意在這個頭信息中有兩個換行符,這是因為Web服務器需要在實際的文本信息開始之前先看見一個空行。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved