找回密码
 立即注册
搜索
查看: 233|回复: 1

厨师兄,那天的问题解决啦,来看perl

[复制链接]

426

主题

4759

回帖

5283

积分

管理员

积分
5283
发表于 2004-1-31 14:19:00 | 显示全部楼层 |阅读模式
发表于: 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我崇拜你!"

327

主题

3264

回帖

3641

积分

荣誉版主

积分
3641
发表于 2004-1-31 22:53:35 | 显示全部楼层
perl我不懂,猜想中,可能要自己解析URL,分离出name和value,呵呵,不错,不错,多谢!原来是这样,学习了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|海浩社区

GMT+8, 2025-9-23 07:00 , Processed in 0.073429 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表