设为首页  加入收藏  联系我们 繁體中文  

黑客软件:

  漏洞扫描 | 木马间谍 | 加密解密 | 远程控制 | 破坏攻击 | 杀毒软件 | 防火墙类 | OICQ专区 | 黑客必备 | 常用工具 | 网吧攻击
文章中心:   最新资讯 | 黑客技术 | 电脑基础 | 菜鸟文摘 | 网络安全 | 网络技巧 | QQ技巧 | OQ空间代码 | 免费资源 | 编程世界 | 建站技术
素材源码:   论坛相关 | ASP源码 | CGI 源码 | NET 源码 | PHP 源码 | 酷站素材 | 字体素材 | 图片素材 | 友情发布 | 网页模版 | 建站软件
教程动画:   黑客教程 | 黑客编程 | 网站入侵 | 菜鸟教程 | 入侵教程 | 破解教程 | 电子书籍 | 网页制作 | 高级会员 | 综合教程 | 本站原创


   

  您当前的位置:中华隐士黑客联盟 -> 编程世界 -> JAVA文章 -> 文章内容 [站内搜索]  

 
用VB编写标准CGI程序
作者:无从考证  来源:转载  发布时间:2006-11-13 19:16:34  发布人:www.hack86.com
利用通用网关接口(CGI),Web服务器可以执行一些外部程序,并将这些外部程 序所产生的输出结果和Web服务器所管理的静态文本、图像和声音融合在一起传给相 应的Web浏览器。当客户机的浏览器向Web服务器请求一个HTML文件时,服务器在收 到请求后就去寻找这个文件并将找到的文件传送给客户机。而当客户机的请求是一 个CGI程序时,Web服务器将激活客户机所请求的CGI程序并把程序的执行结果传给客 户机。 
  标准的CGI程序是通过环境变量和标准输入输出来与Web服务器交换信息的。任 何一个被系统激活的进程都拥有标准输入和输出这两个文件句柄,CGI程序的进程 也不例外。不过,当CGI程序被Web服务器激活以后,它的标准输入STDIN被连接到 Web服务器的标准输出STDOUT上,而CGI程序的标准输出STDOUT则被连到服务器的标 准输入STDIN上。因此,CGI程序从标准输入读取信息(也就是从Web服务器的标准 输出读信息),而它向标准输出写信息(也就是向Web服务器的标准输入写信息)。 
  Web服务器一般将客户机传送来的信息放在它的标准输出和相关环境变量中而CGI程序则从环境变量和它的标准输入(也就是Web服务器的标准输出)获取所 需的信息,程序的最终输出结果则被写向它的标准输出STDOUT(也就是Web服务器的标准输入)。Web服务器将从它的标准输入STDIN(也就是CGI程序的标准输 出)获取CGI程序的输出结果并将它传送给客户机。显然,Web服务器就像是客户机和CGI程序间的中介。 
  Web服务器、CGI程序间的这种标准框架在Unix系统下和微软Windows环境中的字符方式下可以工作得非常好,因为此时系统产生的所有进程都可以存取标准输入和标准输出。但对于微软Windows图形方式下的程序就不行了,因为它们无法存取标准输入和标准输出。为了解决这一问题,微软在Win32系统中创建了另一类型的标准输入和标准输出,程序可以通过调用Win32 API函数来存取标准输入和标准输出,不过,这就意味着使用这类标准输入和标准输出的CGI程序都必须是32位的。 
  微软Windows环境下的其它一些Web服务器(例如Website)则使用另外一种特殊的技术(即利用INI文件)来实现Web服务器和CGI程序间的数据交流。采用这种被称为“Win-CGI”规范编写的CGI程序通常只能在部分Web服务器上运行。一般地,支持Win-CGI的Web服务器将客户端的输入以及有关的状态信息写入到一个INI文件中,而CGI程序则从该INI文件中获取相关信息,这类程序的执行效率没有标准CGI 
程序高。 
  在进行CGI编程时,只要使CGI程序从标准输入和环境变量中获取客户机提供的信息,并将要传送给客户机的输出结果写入标准输出,剩下的信息传递工作将由Web服务器自动完成。CGI只是规定了一个标准的接口规范,只要遵守这个标准规范,程序开发人员就可以利用各种编程工具(如Perl、C、FORTRAN、Visual Basic等)进行CGI编程了。考虑到VisualBasic的强大的数据库处理能力、客户机/服务器模 
式的编程能力以及字符串处理能力,所以本文主要向大家介绍如何使用VB编写标准的CGI程序。 
  一、输入输出的处理 
  一个CGI程序被激活以后,它首先要做的事情就是确定系统平台、Web服务器和客户端浏览器的状态信息以及客户端用户的输入数据。此外,它还必须能够将相关信息传送给客户端,否则它将一事无成。这些操作都是通过存取环境变量和标准输入输出来完成的。用VB编写的CGI程序通过调用函数Environ( 来获取相关环境变量的值。存取标准输入输出就要在程序中使用Win32API函数GetStdHandle( )、ReadFile( )和WriteFile( ),在使用这些函数时首先必须在程序中声明它们,写声明语句时可以借助于VB提供的API文本查看器。 
  以下的CGI程序说明了在VB-CGI程序中如何处理环境变量和标准输入输出。该CGI程序非常简单,可将标准输入中的信息不经任何处理就返回给客户端,它可被任何表单用POST方法激活: 
  Declare Function GetStdHandle Lib "kernel32" (ByVal nStdHandle As Long) As Long 
   Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, 
  ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long,lpOverlapped As Any) As Long 
  Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, ByVal lpBuffer As String,ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long,lpOverlapped As Any) As Long 
  Public Const STD_INPUT_HANDLE = -10& 
  Public Const STD_OUTPUT_HANDLE = -11& 
  Public Const FILE_BEGIN = 0& 
  Public hStdIn As Long ’ 标准输入文件句柄 
  Public hStdOut As Long ’ 标准输出文件句柄 
   
  Sub Main() 
  Dim CGI_ContentLength As String,CGI_QueryString As String 
  Dim lContentLength As Long ’ 标准输入中的字符串的长度 
  Dim sBuff As String ’ 用于存储标准输入中的字符串 
  Dim lBytesRead As Long ’ 实际读入的字符个数 
  Dim rc As Long 
  Dim sFormData As String 
  ’调用系统函数生成标准输入输出文件句柄 
  hStdIn = GetStdHandle(STD_INPUT_HANDLE) 
  hStdOut = GetStdHandle(STD_OUTPUT_HANDLE) 
  ’获取环境变量CONTENT_LENGTH的值,并将它转换为整型 
  CGI_ContentLength = Environ("CONTENT_LENGTH") 
  lContentLength = Val(CGI_ContentLength) 
  sBuff = String(lContentLength, Chr$(0)) 
  ’从标准输入中读数据 
  rc = ReadFile(hStdIn, ByVal sBuff, lContentLength, lBytesRead, ByVal 0&) 
  sFormData = Left$(sBuff, lBytesRead) 
  OutPut "Content-type: text/html" & vbCrLf 
  OutPut "" 
  OutPut "" 
  OutPut "表单传送数据的方法POST " 
  OutPut "本CGI 程序使用Visual Basic编制! " 
  OutPut "POST方法传送的数据: " 
  OutPut "" & sBuff 
  OutPut "" 
  End Sub 
  Sub OutPut(s As String) ’ 定义一个向标准输出写信息的函数 
  Dim lBytesWritten As Long 
  s = s & vbCrLf 
  WriteFile hStdOut, s, Len(s), lBytesWritten, ByVal 0& 
  End Sub 

[1] [2] [3]  下一页

[] [返回上一页] [打 印] [收 藏]
  [相关文章评论]    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
 

  用vbs加用户的绝妙方..
为防木马,无键盘也..
数据包进入cgi程序之..
为防木马,无键盘也..
不用翻箱倒柜:用Vi..
利用Visual Basic实..
教你如何用VB打造远..
系统安全知识 用VB..
用VB打造远程屏幕监..
自主安全 如何禁用V..


 
免费获得Q币的最新方法
最新免费在线看的电影网站集绵
不用木马,轻松万能偷daoQQ号码
最新QQ空间4.0全屏版效果图!!
新免蟆Q秀,刷红钻的方法
黑客快速入门(强烈推荐)
QQ密码本地破解的原理和方法
18岁少女欲6000元卖处女身 救患血..
8款QQ空间免费开场动画
免费QQ蓝钻体验(附考试答案)
 
设置Web邮箱黑客警报器 防止财务.. 04-11
二行代码解决全部网页木马(含ifr.. 04-11
防止黑客根据PHP中的错误信息爆路.. 04-11
webshell下查找所有IIS站点配置... 04-11
终级win2003服务器安全配置篇! 04-11
解决“网际快车”和“迅雷”右键.. 04-11
英国电信(BT)被指监视36000余名互.. 04-11
用命令行开启或关闭 IP 安全策略.. 04-11
Firefox2狂占CPU解决办法 04-11
大水牛下载者手工清除的方法 04-11
 
关于本站 网站帮助 广告合作 下载声明 友情连接 网站地图 访客留言 论坛登录
〖中华隐士黑客联盟〗,Copyright © 2006-2010 WwW.Hack86.Com 闽ICP备:06023304号
站长:小质 QQ:771760,软件发布MAIL:Hack086@21cn.com