boa-0.94.13:Form CGI Echo

说明,部分代码来源网络

Form CGI 是什么

        这是我自己起的名字。CGI通用网关接口程序,如果不能从客户端浏览器获取参数,将没有任何意义。那么CGI程序如何获取客户端用户输入的参数呢?这里主要依靠HTTPGETPOST方法,提取HTMLform表单项目,组成name1=value1&name2=value2....格式的字符串。这样的字符串有一个名字叫做URLEndcode,这也是有标准定义的,具体可以百度一下。

        Web服务器收到后,将此字符串放入环境变量QUERY_STRING中,CGI程序通过解析QUERY_STRING还原浏览器客户端参数。CGI程序在得到这些参数后,就可以做自己的事情了,做完之后,不要忘了把处理结果返回给浏览器。

ECHO测试

         FormCGI ECHO测试就是用户通过浏览器输入什么内容,CGI程序接收后返给用户的内容就是什么。

测试页面

        页面测试效果如图1所示,form表单项目有nameemailmsg。由于页面HTML代码比较多,可以到这里下载测试:cgi_form.html

1

        当用户点击Call CGI按钮后,成功将用户输入提交给了cgi_form.sh程序,cgi_form.sh程序最终将用户输入的内容又返回给浏览器。效果如下图2所示。

2

 CGI程序

        浏览器网提交给服务器的是这样的字符串:

        cgi_form.sh?name=hyx&email=hyx@abc.com&msg=hello+cgi+form&action=Call+CGI

        其中cgi_form.shCGI程序,用户输入的参数都在里面,cgi_form.sh通过解析上面问号后面的字符串,得到参数值,然后将参数值返回给浏览器。

        Shell脚本解析字符串(URLDecode编码),从网上找到了一个现成的脚本来实现字符串解析。它的名字叫proccgi.sh,可网上搜索下载,也可以去这下载proccgi.sh

        以下是cgi_form.sh的全部内容:

#!/bin/sh

eval `./proccgi.sh $*`

echo "Content-type:text/html"

echo ""

echo "<html>"

echo "<head><title>CGI Form</title></head>"

echo "<body>"

echo "<h2>Server Got you parametes! Right!?^_^</h2>"

echo "<h2>Name  :$FORM_name </h2>"

echo "<h2>Email   :$FORM_email </h2>"

echo "<h2>Message : $FORM_msg </h2>"

echo "</body>"

echo "</html>"

总结

         如果CGI程序要处理用户参数,必须要有解析QUERY_STRING的功能,说的规范点就是必须有符合CGI 1.1规范的解析程序。比如本例中使用到的proccgi.sh就是一个shell脚本处理CGI参数,具体用法已经体现在cgi_form.sh脚本中。

问题&思考

         由于我使用的浏览器是win7中文版IE,cgi_form.html也没有指定内容的字符集,IE浏览器打开测试页面cgi_form.html自动选择简体中文。如果通过浏览器输入中文,提交以后会是什么效果呢?

       下一遍文章将会对这一问题与思考给出解释与解决方案。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值