如何在Perl中阅读使用POST发送的URL-Data?

Prz*_*mek 0 forms perl post cgi query-string

我正在尝试读出从页面中的表单发送到我的Perl脚本的POST数据.我用Google搜索并发现:

read(STDIN, $param_string, $ENV{'CONTENT_LENGTH'})
Run Code Online (Sandbox Code Playgroud)

读取整个Data-String,并以.的形式将整个字符串写入$ param_string

Param1=Value1&Param2=Value2&Param3=Value3
Run Code Online (Sandbox Code Playgroud)

通过将它拆分到正确的位置,我得到了必要的数据.

但我想知道为什么我的$ param_string是空的.

当我用GET尝试整个事情时:

$param_string = $ENV{'QUERY_STRING'};
Run Code Online (Sandbox Code Playgroud)

一切正常.有人有想法吗?

Sin*_*nür 12

没有真正的理由让你这个级别的人想要解析CGI请求.

请使用CGI ::简单CGI.pm.

CGI.pm有很多包袱(HTML生成,面向功能的界面),这使得CGI :: Simple更受欢迎.

在CPAN上使用任何CGI处理模块比尝试从头开始编写CGI处理代码要好.

parse_query_stringCGI::Simple处理发布到脚本的表单时,请参阅以获取使用查询字符串传递的参数的方法.

如果您想学习如何正确操作,可以阅读任一模块的源代码.通过CGI.pm CHANGES文件阅读也很有启发性.

  • @Manni,不是真的.此时,手工编写CGI解析就像将乘法编写为重复添加一样.这不是任何现代程序员应该处理的事情,除非他们想要专注于低级别的东西. (2认同)