CGI

标题也就是这里要说的内容.

CGI也就是公用网关接口.  

历史:

  自从91年欧洲原子核研究中心开发出了www协议,网络服务的享受者就不局限于那些网络设计者了.

  借此,web技术就应运而生了.早期,web技术只是按照客户服务器方式进行静态的连接,一个是服务请求方,一个是服务提供方,提供的一般都是静态的,没法动态变化的内容.后来人们发现了其缺点,就进而思考去改变一下.   因此动态网页的概念就出现了!  动态网页就是可以动态变化,随用户的想法进行改变的网页.

  但是网络设计者就犯难了,这说起来简单,做起来难!   我们都知道使用网络,但是网络如何通信呢?   动态通信又如何进行呢?这里就不讲http协议是如何规定客户端及服务器端如何进行通信的了!   主要讲动态变化是如何实现的.

  首先,客户端发出服务请求,比如查询数据库的某条信息.  它就发送请求给服务器,服务器在受到请求后会对之进行处理,比如"你小子原来想查询李四的账号密码",但是我们要知道,服务器不是万能的,不是什么乱七八糟的东西它都要管,它想管的话要知道它要给请求方提供什么服务?且它怎么提供这种服务?在知道提供的确切服务后,他就要着手进行这种服务的进行.  通过什么呢?   就是CGI程序(脚本),如这个脚本告诉它,他应该怎么做来实现这种服务,它在执行这个脚本后就能回送给服务器,服务器在添加一定必要信息之后就能发送给客户端了.最后,客户端的浏览器就能解析这种信息并渲染在屏幕上了.

 

从上面就可以看出CGI就是一个信息进行交互的"接口",在我们的印象里,串行转并行,或者并行转串行大抵也是相同的道理.

CGI并不是一种语言,他只是一个标准,一种供信息在不同系统之间进行交换的一个规则,一种协议而已. 

CGI脚本是在服务器端"运行"的,为啥这么说呢? 因为服务器本身不提供脚本的运行,在有多方进行协商后才有了这么个信息转换的规则出现.

 

 

使用CGI实现客户端与服务器的交互有以下几个标准步骤,具体步骤如下:

(1)Web 客户端的浏览器将URL的第一部分解码与Web服务器相连。

 

(2)Web 浏览器将URL的其余部分提供给服务器。

 

(3)Web 服务器将URL转换成路径和文件名。

 

(4)Web 服务器发送 HTML 和别的组成请求页面的文件给客户。一旦页面内容传送完,

 

这个连接自动断开。

 

(5)在客户端,HTML脚本提示用户做动作或输入。当用户响应后,客户请求Web服务器建立一个新的连接。

 

(6)Web 服务器把这些信息和别的进程变量传送给由HTML以URL的形式指定CGI程序。

 

(7)CGI 根据输入作出响应,把响应结果传送给 Web 服务器。

 

(8)Web 服务器把响应的数据传给客户,完成后关闭连接。 [2] 

 

 

 

公共网关接口 CGI 程序是存放在 HTTP 服务器上,为用户和HTTP服务器之外的其他应用程序提供互相“交谈”手段的软件,其特点是:

 

公共(Common)。无须考虑客户机和服务器所运行的操作系统平台,只要二者的网关程序遵循同一数据传输协议,即可进行数据交互。

 

网关(Gateway)。CGI 可被用来作为 HTTP 服务器与其他第三方应用程序之间的“连接件”或“中件(Middle Ware) "。

 

接口(Interface)。CGI 使用标准通讯机制,为其它应用程序与 HTTP 服务器提供数据传输接口。用 CGI 可以实现处理表格,数据库查询,发送电子邮件或控制服务器端硬件等许多操作。

 

下面代码展示一下如何用php语言实现一个具体的数据库查询功能的CGI程序.

 

CGI程序不是放在服务器上就能顺利运行,如果要想使其在服务器上顺利的运行并准确的处理用户的请求,则须对所使用的服务器进行必要的设置。

 

配置:根据所使用的服务器类型以及它的设置把CGI程序放在某一特定的目录中或使其带有特定的扩展名。
 
 
 
CGI应用程序运行在浏览器可以请求的服务器系统上,执行时需要使用服务器CPU时间和内存。如果有成千上万的这种程序会同时运行,那会对服务器系统提出极高的要求。你要慎重考虑这个问题,以防止服务器系统崩溃
 

简单介绍以下php和asp:

 

ASP(Active Server Pages):活动服务器页面,就是一个编程环境,在其中,可以混合使用HTML、脚本语言以及组件来创建服务器端功能强大的Internet应用程序。如果你以前创建过一个站点,其中混合了HTML、脚本语言以及组件,你就可以在其中加入ASP程序代码。通过在HTML页面中加入脚本命令,你可以创建一个HTML用户界面,并且,还可以通过使用组件包含一些商业逻辑规则。组件可以被脚本程序调用,也可以由其他的组件调用。

 

ASP的工作原理:

 

当在Web站点中融入ASP功能后,将发生以下事情:

 

1、用户调出站点内容,默认页面的扩展名是.asp。

 

2、浏览器从服务器上请求ASP文件。

 

3、服务器端脚本开始运行ASP。

 

4、ASP文件按照从上到下的顺序开始处理,执行脚本命令,执行HTML页面内容。

 

5、页面信息发送到浏览器。

 

因为脚本是在服务器端运行的,所以Web服务器完成所有处理后,将标准的HTML页面送往浏览器。这意味着,ASP只能在可以支持的服务器上运行。让脚本驻留在服务器端的另外一个益处是:用户不可能看到原始脚本程序的代码,用户看到的,仅仅是最终产生的HTML内容。

 

PHP:Hypertext Preprocessor

 

PHP 是一种服务器端的,嵌入HTML的脚本语言。PHP区别其他像客户端Javascript的地方是它的代码在服务器端执行.PHP能做什么?

 

最低水平,PHP可以做任何其他CGI程序所能做的事,例如收集表格数据,生成动态页面内容,或者收发cookies.可能最强大,最有意义的特性是PHP支持大范围的数据库。书写一个支持数据库的Web 页面是难以置信的简单。
以上大都来源于:https://baike.baidu.com/item/CGI/607810?fr=aladdin

 

 

以下是主页面.

 1 <!DOCTYPE html>
 2 <html>
 3     <head lang="en">
 4         <meta charset="UTF-8"/>
 5         <title>main-page</title>
 6         
 7         <style type="text/css">
 8             a{
 9                 text-decoration:none;
10                 display:block;
11                 border:1px red solid;
12             }
13             td{
14                 border:1px red solid;
15             }
16         </style>
17     </head>
18     <body background="img/main_page.jpg">
19     <h3 align="center" >hello this is a sql page ,you can take some actions to realize you target!</h3>
20         <div align="center">
21             <tr>
22                 <td><a href="select.php">select</a></td> <br/>
23                 <td><a href="insert.php">insert</a></td> <br/>
24                 <td><a href="delete.php">delete</a></td> <br/>
25                 <td><a href="update.php">update</a></td>
26             </tr>
27         </div>
28     </body>
29 </html>

以下是副页面:

 1 <!DOCTYPE html>
 2 <html>
 3     <head lang="en">
 4         <meta charset="UTF-8"/>
 5         <title>select-page</title>
 6         
 7         <style type="text/css">
 8         
 9         </style>
10         <script>
11 function showHint(str)
12 {
13   var xmlhttp;
14   if (str.length==0)
15   { 
16     document.getElementById("txtHint").innerHTML="";
17     return;
18   }
19   if (window.XMLHttpRequest)
20   {
21     // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
22     xmlhttp=new XMLHttpRequest();
23   }
24   else
25   {
26     // IE6, IE5 浏览器执行代码
27     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
28   }
29   xmlhttp.onreadystatechange=function()
30   {
31     if (xmlhttp.readyState==4 && xmlhttp.status==200)
32     {
33       document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
34     }
35   }
36   xmlhttp.open("GET","_select.php?q="+str,true);
37   xmlhttp.send();
38 }
39 
40 function myfunction()
41 {
42     var str=document.getElementById("txt1").value;
43     showHint(str);
44 }
45         </script>
46     </head>
47     
48     <body background="img/main_page.jpg">
49         
50         <p color="red"><strong>hello  this is a select-page!</strong></p>
51         <p display="inline">请输入主键:</p>
52         输入姓名: <input type="text" id="txt1"/>
53         <button type="button" onclick="myfunction()"/> click </button>
54         <div id="txtHint">
55         
56         </div>
57     </body>
58 </html>

以下是php实现的CGI程序实现的查询功能:

 1 <?php
 2 $servername = "localhost";
 3 $username = "root";
 4 $password = "1234";
 5 $dbname="goods";
 6 $q=$_GET['q'];
 7 // 创建连接
 8 $conn = new mysqli($servername, $username, $password, $dbname);
 9  
10 // 检测连接
11 if ($conn->connect_error) {
12     die("连接失败: " . $conn->connect_error);
13 } 
14 
15 $sql="select * from customer";
16 $return = $conn->query($sql);
17 if($return->num_rows >0)
18 {
19     while($row=$return->fetch_assoc())
20     {
21         if($row['用户名']==$q)
22         {
23             $str="姓名:".$row['用户名'].'<br/>'."性别:".$row['性别'].'<br/>'.'地址'.$row['现住址'];
24             $str=$str.'<br/>'.'手机号:'.$row['手机号'].'<br/>'.'邮箱:'.$row['邮箱'].'<br/>';
25             echo $str;
26             break;
27         }
28         else{
29             continue;
30         }
31     }
32 }
33 else {
34     echo "0 结果";
35 }
36 
37 $conn->close();
38 ?>

 

以上,页面很简单.

见谅!

 

posted @ 2020-02-09 17:10  SSXFC  阅读(346)  评论(0编辑  收藏  举报