• 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来对收到的数据进行字符替换、分割,最终得到便于使用的格式

  • 相关阅读:
    nodejs初期,搭建一个登陆注册功能,(原生的)
    关于vue如何创建一个自定义组件(这是项目中经常得用的)
    关于vue 使用watch方法,详解。
    怎样用Nodejs搭建一个服务器
    关于Promise的理解及运用
    Ado.NET SQLHelper(2)
    Ado.NET SQLHelper
    MS SQLSERVER 自增ID列竟然会重复
    SQL中Left Join 与Right Join 与 Inner Join 与 Full Join的区别
    thread.start和threadstart.invoke的区别
  • 原文地址:https://www.cnblogs.com/-beyond/p/8566938.html
Copyright © 2020-2023  润新知