例如,很难解释。如果我有这样的事情:
print submit(value => Exit), "\n";
如何制作它,以便当用户按下浏览器中的退出按钮时,它会将它们重定向到例如“cya later”的页面。
答案 0 :(得分:1)
您正在使用CGI.pm中的HTML生成功能。这些都是deprecated for some time(它们从来都不是一个好主意)。我建议您使用templating engine instead。
话虽如此,您需要的更改非常简单。您需要在两个地方更改代码。首先,您需要更改生成提交按钮的代码,以便为生成的HTML添加名称。
# Don't do this. Use a template.
# NB: Note the '-' I've added to the option names.
print submit(-value => 'Exit', -name => 'Exit'), "\n";
然后你需要更改处理传入参数的代码来处理这个新参数。
if (param('Exit')) {
print redirect('http://somewhere_else.com/');
exit;
}
请注意:a)应该打印重定向标题而不是您计划返回的任何其他标题(因此,不包括内容类型标题)和b)您的程序应在打印后立即退出重定向标题 - 您不应该打印任何其他输出。
更新:还值得指出的是,避免HTML生成功能的原因之一是它们(必然)过于复杂而无法使用。一个很好的例子就是你对它们的使用:
print submit(value => Exit)
这实际上是错误的,因为它产生了这个输出:
<input type="submit" name="value" value="Exit" />
我怀疑你的意思是:
print CGI->new->submit(-value => 'Exit')
这给出了这个:
<input type="submit" name=".submit" value="Exit" />
由于您没有给出明确的名称,该函数已为您合成了一个(.submit
)。在上面的例子中,我给输入一个明确的名字:
print submit(-value => 'Exit', -name => 'Exit')
产生这个:
<input type="submit" name="Exit" value="Exit" />
答案 1 :(得分:0)
将提交按钮设为name
。如果用于提交表单,它将显示在params
中。