shell脚本--CGI获取请求数据(GET / POST)

  Case 1: 获取地址栏传递的参数(即通过GET方式)

  CGI的环境变量中有个QUERY_STRING,可以获取地址栏传递的参数,该参数可以是手动加上的,也可以是通过表单的get方式提交的,比如下面的例子:

#!/bin/bash
#index.cgi

echo "Content-Type:text/html;charset=utf-8"
echo

cat << AAA
    <html>
    <head>
        <title>hello world</title>
    </head>
    <body>
    <form method="get">
        data:<input type="text" name="data">
        <input type="submit" value="submit">
    </form>
AAA
echo $QUERY_STRING
cat << AAA
    </body>
    </html>
AAA

  浏览器运行结果如下:

  

  Case 2:获取post方式提交的数据

  因为环境变量QUERY_STRING只能获取地址栏和get方式提交的数据,而不能获取post的数据,但是可以通过REQUEST_METHOD(即请求方式)来判断是否为post,如果为post方式,那么就直接接收数据即可,接收数据使用tee,或者cat即可。

#!/bin/bash
#index.cgi

echo "Content-Type:text/html;charset=utf-8"
echo

cat << AAA
    <html>
    <head>
        <title>hello world</title>
    </head>
    <body>
    <form method="post">
        编号:<input type="text" name="id"><br>
        姓名:<input type="text" name="uname"><br>
        <input type="submit">
    </form>
AAA
if [ $REQUEST_METHOD = "POST" ];then
    #使用cat或者tee接受post的方法
    #query_string=`cat`
    query_string=`tee`
fi
echo $query_string
cat << AAA
    </body>
    </html>
AAA

  运行结果如下:

 

  可以发现:上面两种方法提交的数据,只要中间有空格,那么就会被替换为+号,接收到的数据和php程序接收到的数据格式不同,需要我们自己运用awk或则sed来对收到的数据进行字符替换、分割,最终得到便于使用的格式

 

posted @ 2018-03-14 13:05  寻觅beyond  阅读(2928)  评论(0编辑  收藏  举报
返回顶部