无法通过 perl 上的 html-forms 发送获取和发布 http 请求



我的站点上有交换机结构
我处理get请求,并根据查询中的内容加载不同的脚本。脚本中有切换指令。例如

链接:site.com/-打印类似于"按下一些菜单按钮"的

链接:site.com/?mode=users-加载脚本用户.pl

链接:site.com/?mode=address-加载脚本地址.pl

链接:site.com/?mode=users&action=add-加载脚本users.pl,在这个脚本中,我有另一个开关,它根据get参数"action"做不同的事情。

_/?mode=users&action=add_上,我有表单。此表单中的操作为none(操作="),方法=post。所以当我按下"发送"按钮时,这个页面必须用post参数刷新。正确的正确的

问题是:当我按下发送按钮index.pl加载时,页面不一样。就像没有get参数一样。

我尝试打印所有参数,哪个页面接收

@names = $params->param;
print @names;

它正在打印post参数,我在表单中输入了这些参数,但没有打印链接中的get参数。链接相同:/?mode=用户&action=add

我尝试打印$ENV{'QUERY_STRING'};-显示的所有参数。post和get的名字都是正确的。怎么了?当我发送表单时,$ENV{'HTTP_REQUEST'};只是"post",但当我刚用表单加载页面时,它是"get"。

Perl不能同时发送get和post请求吗?我该怎么办
这就是我处理查询字符串的方式:

$params=new CGI;
$action=$params->param("mode"); # or $action=$params->param("action");

和交换机:

use feature 'switch';
for ($action) {
when ('users') {
do "./pages/users.pl";
}
.... some more 'when'
default { 
print 'select something'; 
}
}

在问号前面去掉斜线例如变化/?mode=用户&action=添加到?mode=用户&action=添加

我真的不知道为什么它不起作用,但我找到了下一个解决方案。例如链接是/?mode=用户&action=add(它是一种形式)。我只是在表单中添加2:

<input type='hidden' name='mode' value='users'>
<input type='hidden' name='action' value='add'>

最新更新