当我在客户更改选项后尝试提交表单时,会显示“确认表单重新提交”
<?php
if (isset($_POST['fix'])) {
header('Location: ' . $_SERVER['HTTP_HOST']);
exit();
}
?>
<!DOCTYPE html>
<html>
<head>
<!-- unnecessary content -->
</head>
<body>
<form method="POST">
<fieldset>
<legend>Confirm Form Resubmission</legend>
<select name="choose" onchange="this.form.submit()">
<option value="1">1st</option>
<option value="2">2nd</option>
<option value="3">3rd</option>
</select>
<button name="fix">Fix</button>
</fieldset>
</form>
</body>
</html>
我在按钮提交的表单中测试注释中的重定向代码并且它有效!
但在这种情况下,我希望能够通过更改选项提交表单......
答案 0 :(得分:0)
在对组合框进行更改后,您将通过命令onchange="this.form.submit()"
提交表单。
您的问题是,当页面收到此参数时(因为您没有为表单指定操作属性,它将提交到同一页面),您检查是否设置了$_POST['fix']
哪个不是因为你有一个标签按钮&#34; fix&#34;在form
中,form
标记的输入无效。您必须将if条件更改为您实际通过form
发送的内容:
if (isset($_POST['choose'])) {
此处您还有另一个问题,因为您将网页重定向到同一台服务器header('Location: ' . $_SERVER['HTTP_HOST']);
此变量$_SERVER['HTTP_HOST']
可能会产生localhost
,因此请说明您的网页名称为{ {1}}然后您在浏览器上调用它:mypage.php
当您更改组合框时,它会提交您的表单,输入if并将您重定向到http://localhost/mypage.php
,这可能会返回http://localhost/localhost
这意味着找不到页面。
所以你必须修复这个命令才能将结果实际发送到另一个页面,或者只是做一些其他事情,比如回显你所选择的值,如:
Error 404