linux下shell处理cgi的方法--post get

本文深入解析Web Server通过GET和POST方法与CGI脚本进行交互的过程,以实际代码为例,详细展示了如何在Linux shell环境中实现数据的接收与处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

web server获取网页上HTML的DOM对象信息发送来的信息,主要有get和post方法。

介绍原理的文章很多,但介绍实际应用到linux的shell中的文章很少。

 

1、get方法

①表单源码如下,有几个HTML对象作为传值对象。

<html>
<head>
<title>CGI Test</title>
</head>

<body>
<form name="form1" method="get" action="/cgi-bin/test-get">
  <p>Text field
    <input name="Text_Field" type="text" id="Text_Field">
  </p>
  <p>Radio button  </p>
  <p>
    <input name="Radio_Button" type="radio" value="1"> 1
  </p>
  <p>
    <input name="Radio_Button" type="radio" value="2"> 2
  </p>
  <p>
    <input name="Radio_Button" type="radio" value="3"> 3
  </p>
  <p>&nbsp;</p>
  <p>
    <input type="submit" name="Submit" value="Submit">
    <input type="reset" name="Reset" value="Reset">
  </p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
</form>
</body>
</html>

②cgi get脚本,使用环境变量QUERY_STRING传值。

#!/bin/sh

echo "Content-type: text/html"
echo ""
echo "<HTML><HEAD><TITLE>Sample CGI Output</TITLE></HEAD>"
echo "<BODY>"
echo "<pre>"

#echo "Environment variables"
#echo ""

env

#echo ""
#echo "========================================================="
#echo ""
#echo "Form variables :"
#echo ""

 str=$QUERY_STRING
echo $str
# [ "${str%&}" = "$str" ] && str="$str&"

# pair=${str%%&*}
# var=${pair%=*}
# val=${pair#*=}

pair=${str##*&}
var=${pair%=*}
val=${pair#*=}
str=${str#*&}
 echo "$pair"
 echo "$var"
 echo "$val"
 echo "$str"
 echo ""


#echo $val
if [ $val = "lighton" ];then
 echo "select to open light"
fi

if [ $val = "lightoff" ];then
 echo "select to close light"
fi

if [ $val = "rolling" ];then
 echo "select to rolling light"
fi

echo "</pre>"
echo "</BODY>"
echo "</HTML>"

2、post方法

①表单源码

<html>
<head>
<title>CGI Test</title>
</head>

<body>
<body style="text-align: center">
<form name="form1" method="post" action="/cgi-bin/test-post">
  <p>Text field
    <input name="Text_Field" type="text" id="Text_Field">
  </p>
  <p>Radio button  </p>
  <p>
    <input name="Radio_Button" type="radio" value="1"> 1
  </p>
  <p>
    <input name="Radio_Button" type="radio" value="2"> 2
  </p>
  <p>
    <input name="Radio_Button" type="radio" value="3"> 3
  </p>
  <p>Some text </p>
  <p>
    <textarea name="Text_Area" id="Text_Area"></textarea>
  </p>
  <p>&nbsp;</p>
  <p>
    <input type="submit" name="Submit" value="Submit">
    <input type="reset" name="Reset" value="Reset">
  </p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
</form>
</body>
</html>

 

②post传值时,使用环境变量CONTENT_LENGTH表示传输数据长度。

而实际内容需要从标准输入设备接收,这里使用命令“read pos -n CONTENT_LENGTH”,注意,接收个数需做限制。

#!/bin/sh
echo "Content-type: text/html"
echo ""
echo "<HTML><HEAD><TITLE>Sample CGI Output</TITLE></HEAD>"
echo "<BODY>"
echo "<pre>"
echo "Environment variables"
echo ""
env
echo ""
echo "========================================================="
echo ""
echo "Form variables :"
echo ""
#echo $CONTENT_LENGTH
read pos -n CONTENT_LENGTH
#echo $pos
tmp=${pos%%&*}
#echo $tmp
tmp=${tmp#*=}
echo "Text_Field=$tmp"
tmpcur=${pos#*&}
#echo $tmpcur

tmp=${tmpcur%%&*}
tmp=${tmp#*=}
echo "Radio_Button=$tmp"
tmpcur=${tmpcur#*&}

tmp=${tmpcur%%&*}
tmp=${tmp#*=}
echo "Text_Area=$tmp"
echo "</pre>"
echo "</BODY></HTML>"

本文参考http://blog.chinaunix.net/uid-21025382-id-168762.html,非常感谢,但原作对于post的处理存在错误之处,这里纠正出来。

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值