免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2276 | 回复: 3
打印 上一主题 下一主题

用POST不得获得提交的内容!!!???? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-23 22:24 |只看该作者 |倒序浏览
##########见过的,我都加上去试#####
use CGI qw(:all);
use HTTP::Request::Common qw(POST);

print header(-charset=>;'gb2312');

my $buff;
if($ENV{'REQUEST_METHOD'} eq "OST" {
read(STDIN,$buff, $ENV{'CONTENT_LENGTH'});
$xx=$ENV{'CONTENT_LENGTH'};
print "post=post\n";
print "$buff\n";
print "$xx\n";
###我测试的时候,页面显示 了"post=post" 但是,$buff 的值为空,而#$xx的值是正确的。
$yy=$ENV{'CONTENT_TYPE'};
print "$yy\n";
} elsif($ENV{'REQUEST_METHOD'} eq "GET" {
$buffer=$ENV{'QUERY_STRING'};
print "get=get\n";
print "$buffer\n";
}
(中间为了测试,用print 显示了一些字符 )
事实上,我根本不知道是什么原因导致这个错,我用一个 页面提交了一些表单内容到这个 pl 文件中, 但是  却抓不出  提交的内容!
用 get  是可以的!!!
请哪位帮帮忙,到底是什么原因,或者如何去检查他是什么原因
LOG中显示正常!

论坛徽章:
0
2 [报告]
发表于 2005-08-23 23:55 |只看该作者

用POST不得获得提交的内容!!!????

原帖由 "hxgang" 发表:
##########见过的,我都加上去试#####
use CGI qw(:all);
use HTTP::Request::Common qw(POST);

print header(-charset=>;'gb2312');

my $buff;
if($ENV{'REQUEST_METHOD'} eq "OST" {
read(STDIN,$bu..........


POST下,我记得还要用pack()来转换字符。
既然你use CGI了,为什么还要自己捕获输入呢?CGI模块最有用的就是param()函数了,你直接使用它获取WEB提交的内容就可以了,不用管什么GET,PUT。例如:
my $user=param('username');
my $domain=param('domain');

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
3 [报告]
发表于 2005-08-24 14:21 |只看该作者

用POST不得获得提交的内容!!!????

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;
        }
如果碰到$name 有多个value..会出问题..但 是这不是问题..可以用各种方式解决...

论坛徽章:
0
4 [报告]
发表于 2005-08-24 17:35 |只看该作者

用POST不得获得提交的内容!!!????

非常感谢  兰花仙子     解惑,事实上,我是自学,所以,很多东西就算看到过,但是没用过。 汗。。。。  
     我用  param 将它解决了
apile 也非常谢谢你,但是,也许是我环境出现问题,我现在用这个是不行的,,,  当出现  多个 $name  和  $value 的时候,我是将其循环,然后将  $name 做变量名  $value做值 放到另一个地方,然后处理的,但是,read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'}) 是根本没数据的。
  至于用 POST 为什么不行,我想我暂时是没办法去解决了,
再次感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP