现在的位置: 首页 > 编程语言 > shell > 正文
教你用shell写CGI程序
2013年06月19日 shell, 程序人生, 编程语言 ⁄ 共 1186字 评论数 6 ⁄ 被围观 17,478 views+

以前用shell写过一些cgi的例子。今天向大家介绍一下。

CGI是一种接口的标准,并不区分编程语言,也就是说,CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。CGI会将标准输出重定向到给http的response,返回给浏览器。

CGI严格的介绍,公共网关接口CGI(Common GatewayInterface) 是WWW技术中最重要的技术之一,有着不可替代的重要地位。CGI是外部应用程序(CGI程序)与Web服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的规程。CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。

……

言归正传,下面详细介绍一下如何使用shell来写一个CGI。

对于CGI而言,最主要就是接收到用户的请求,从请求中,解析出get或者post方法传递过来的参数。这点,我认为也是对于初学者最麻烦的地方,这里提供一个已经完成这种功能的脚本—proccgi.sh(稍后会提供下载的网址)。这个脚本可以直接解析出get和post方法传过来的数据。

使用方法:

在CGI的shell脚本中调用eval `./proccgi.sh $*`语句,然后使用“$FORM_”和参数的key,就可以获得参数的值了,如task_id="$FORM_taskid"。

成长的企鹅的博客

上图就是一个最简单的shell的CGI程序了,从前台将taskid=XXXX,传给CGI程序。CGI中调用了proccgi.sh脚本,将taskid的值解析出来存放到变量FORM_taskid中。这样,就已经拿到taskid的值了。接下来print task_id,是将task_id的值输出到标准输出,到此CGI程序就全部结束了,CGI会将print到标准输出的内容全部当作http的response,返回给浏览器。

有人可能奇怪,这明明是个简单的shell的脚本。怎么就可以当作CGI来用呢。前面已经说过,CGI是一个接口的标准,只要程序的输出到标准输出的内容,第一行是“Content-type:text/html;charset=UTF-8\n”这种形式的,就可以当作CGI来使用。不相信的朋友,可以用这种语言试试。当然,写好的CGI必须放在apache的可执行目录下面啊。不然无法通过url访问到这个CGI。

最后关于CGI的命名,在公司,写完CGI之后,一般会将名字修改成XXXX.cgi。不管是脚本还是二进制程序,都可以这样修改它。其实这并没有什么规定,保留.exe、.sh或者.py,CGI照样可以执行。

其实说到底CGI就是后台一个可执行程序。

proccgi.sh出处:http://www.fpx.de/fp/Software/ProcCGIsh.html

原创文章,转载请注明: 转载自成长的企鹅

本文链接地址: 教你用shell写CGI程序

关于我:成长的企鹅简介

目前有 6 条留言 其中:访客:3 条, 博主:1 条 引用: 2

  1. Dronnarraplef : 2013年11月17日08:33:44  -49楼 @回复 回复

    Nice blog )
    http://t4sbami1.com my blog

  2. bbking : 2014年04月02日02:30:38  -48楼 @回复 回复

    “…然后使用“$FROM_”和参数的key,就可以获得参数的值了…”很明显,这里应该是“$FORM_”而不是“$FROM_”


  3. 管理员
    成长的企鹅 : 2014年04月30日15:54:26  -47楼 @回复 回复

    博文已修改

  4. 校花等你来 : 2015年10月07日23:08:29  -46楼 @回复 回复

查看来自外部的引用: 2

给我留言

留言无头像?


×