我的站点上有交换机结构
我处理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'>