|
发表于: 2004-01-31 14:01 发表主题: 给大家一个好东西,用shell做cgi的绝对可以用上:)
--------------------------------------------------------------------------------
这个是perl版面的朋友写的,俺稍微做了一点点调整。大家用shell写cgi的时候一定会遇见这个问题:如何从表单提交参数到shell写的cgi呢?表单提交的时候一定需要一个name和vaule,但是shell的参数只有$1 $2...(我只知道这个,要是有其他的方式大家一定要告诉我),所以在网页里提交的时候是这样的格式http://1.2.3.4./cgi-bin/test.sh?vaule1+vaule2+vaule3+vaule4...
但是从表提交的格式是http://1.2.3.4./cgi-bin/test.sh? ... ;name3=zzz.........
所以我想perl一定可以做这个,所以去perl版面问了一下,果然有结果……^!^
#!/usr/bin/perl
print "Content-type: text/plain\n\n";
if ($ENV{'REQUEST_METHOD'} eq 'POST')
{
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
}
else
{
$buffer=$ENV{'QUERY_STRING'};
}
@pairs = split(/&/, $buffer);
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/~!/ ~!/g;
$FORM{$name} =$value;
}
$D1=$FORM{"D1"};
$D2=$FORM{"D2"};
$D3=$FORM{"D3"};
$D4=$FORM{"D4"};
$D5=$FORM{"D5"};
$D6=$FORM{"D6"};
exec ("/var/www/cgi-bin/123.sh \"$D1\" \"$D2\" \"$D3\" \"$D4\" \"$D5\" \"$D6\"");
--------------------------------------------------------------------------------
D1-D4就是name
_________________
#!/bin/sh
echo "bjgirl我崇拜你!" |
|