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

  • 相关阅读:
    Dockerfile编写语法
    java应用测试报告生成(二):利用ant的build.xml生成测试报告
    java应用测试报告生成(一): sonarqube配合Jenkins生成测试报告及覆盖率
    cannot create windows service for mysql
    线程交互:生产消费模型
    线程同步与锁
    线程的五种状态及改变状态的三种方法
    简单的git入门介绍及常用操作
    CentOS/RHEL 7中的firewall控制
    oracle数据库兼容mysql的差异写法
  • 原文地址:https://www.cnblogs.com/-beyond/p/8566938.html
Copyright © 2011-2022 走看看