CGI
标题也就是这里要说的内容.
CGI也就是公用网关接口.
历史:
自从91年欧洲原子核研究中心开发出了www协议,网络服务的享受者就不局限于那些网络设计者了.
借此,web技术就应运而生了.早期,web技术只是按照客户服务器方式进行静态的连接,一个是服务请求方,一个是服务提供方,提供的一般都是静态的,没法动态变化的内容.后来人们发现了其缺点,就进而思考去改变一下. 因此动态网页的概念就出现了! 动态网页就是可以动态变化,随用户的想法进行改变的网页.
但是网络设计者就犯难了,这说起来简单,做起来难! 我们都知道使用网络,但是网络如何通信呢? 动态通信又如何进行呢?这里就不讲http协议是如何规定客户端及服务器端如何进行通信的了! 主要讲动态变化是如何实现的.
首先,客户端发出服务请求,比如查询数据库的某条信息. 它就发送请求给服务器,服务器在受到请求后会对之进行处理,比如"你小子原来想查询李四的账号密码",但是我们要知道,服务器不是万能的,不是什么乱七八糟的东西它都要管,它想管的话要知道它要给请求方提供什么服务?且它怎么提供这种服务?在知道提供的确切服务后,他就要着手进行这种服务的进行. 通过什么呢? 就是CGI程序(脚本),如这个脚本告诉它,他应该怎么做来实现这种服务,它在执行这个脚本后就能回送给服务器,服务器在添加一定必要信息之后就能发送给客户端了.最后,客户端的浏览器就能解析这种信息并渲染在屏幕上了.
从上面就可以看出CGI就是一个信息进行交互的"接口",在我们的印象里,串行转并行,或者并行转串行大抵也是相同的道理.
CGI并不是一种语言,他只是一个标准,一种供信息在不同系统之间进行交换的一个规则,一种协议而已.
CGI脚本是在服务器端"运行"的,为啥这么说呢? 因为服务器本身不提供脚本的运行,在有多方进行协商后才有了这么个信息转换的规则出现.
使用CGI实现客户端与服务器的交互有以下几个标准步骤,具体步骤如下:
下面代码展示一下如何用php语言实现一个具体的数据库查询功能的CGI程序.
简单介绍以下php和asp:
以下是主页面.
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 ?>
以上,页面很简单.
见谅!