我正在编写一个函数,列出所有传递给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对的名称和值是否重复?
答案 0 :(得分:4)
略微改进的方法是检查是否request_method() eq 'POST'
。如果查询字符串并且post都包含相同的参数名称,您仍可能会获得重复的参数名称。
答案 1 :(得分:0)
检查了code for the CGI module之后,除了第670行的语句之外,我无法看到QUERY_STRING环境变量检查POST请求,如果来自POST数据和查询的数据,该语句将被取消注释字符串应该合并。
我建议您在CGI副本中取消注释此行,或者POST数据中的值是否复制到其他地方的URL - 也许是浏览器?