Perl CGI可靠地读取url_param和param

时间:2012-04-19 16:48:22

标签: perl url cgi param

我正在编写一个函数,列出所有传递给CGI脚本的params,无论是通过POST发送的表单,URL字符串还是两者。

这有两个功能:

param():尽管有documentation,但我发现这只是在 OR URL params中读取 EITHER POST参数没有POST params。

另一方面,url_param()读取通过URL字符串传入的参数,无论POST如何。


我的功能

sub post_and_url_param_keys{
  if(url_param){
    return [url_param, param];
  }else{
    return [param];
}

如果传入以下内容,它可以列出所有参数:

POST和网址参数

仅限POST params

X 仅限URL参数(每个键列出两次)

有没有办法整齐地解决这个问题而不必检查每个param对的名称和值是否重复?

2 个答案:

答案 0 :(得分:4)

略微改进的方法是检查是否request_method() eq 'POST'。如果查询字符串并且post都包含相同的参数名称,您仍可能会获得重复的参数名称。

答案 1 :(得分:0)

检查了code for the CGI module之后,除了第670行的语句之外,我无法看到QUERY_STRING环境变量检查POST请求,如果来自POST数据和查询的数据,该语句将被取消注释字符串应该合并。

我建议您在CGI副本中取消注释此行,或者POST数据中的值是否复制到其他地方的URL - 也许是浏览器?