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来对收到的数据进行字符替换、分割,最终得到便于使用的格式
如需转载,请注明文章出处,谢谢!!!