<form entype="multipart/form-data" method="GET" action="">
<div class="box-body">
<input class="form-control input-lg" name="keyword" type="text" placeholder="Masukkan kata kunci">
</div>
<div class="box-body">
<input value="1" type="checkbox" class="minimal" name="queryexp" />
Gunakan query expansion
</div>
<div class="box-footer">
<button type="submit" class="btn btn-primary" value="Submit">Submit</button>
</div>
</form>
你好,我想问一个简单的问题。上面的代码是 search.php ,
我想根据是否选中复选框将表单发送到其他页面。如果选中该复选框,则会将其定向到 resqueryexp.php ,但如果没有,则会定向到 result.php
我一直在尝试添加此代码,但它不起作用。
<?php
if (isset($_GET['queryexp'])){
header("Location: resqueryexp.php");
}else{
header("Location: result.php");
}?>
抱歉我的英语不好,并提前致谢。
答案 0 :(得分:1)
请记住,在任何实际输出之前必须调用header() 通过普通HTML标记,文件中的空行或PHP发送。 使用include或require读取代码是一个非常常见的错误, 函数或其他文件访问函数,并且有空格或空 调用header()之前输出的行。一样的问题 使用单个PHP / HTML文件时存在。
<html>
<?php
/* This will give an error. Note the output
* above, which is before the header() call */
header('Location: http://www.example.com/');
exit;
?>
答案 1 :(得分:1)
<?php
if ( isset( $_GET['submit'] )) {
if ($_GET['queryexp'] == 1 ){
header("Location: resqueryexp.php");
exit;
}
else
{
header("Location: result.php");
exit;
}
}
?>
<html>
<head><title>test</title>
</head>
<body>
<form enctype="multipart/form-data" method="GET" action="">
<div class="box-body">
<input class="form-control input-lg" name="keyword" type="text" placeholder="Masukkan kata kunci">
</div>
<div class="box-body">
<input value="1" type="checkbox" class="minimal" name="queryexp" />
Gunakan query expansion
</div>
<div class="box-footer">
<button type="submit" name="submit" class="btn btn-primary" value="Submit">Submit</button>
</div>
</form>
&#13;
此代码不会在此处运行,但这就是它在您的网络服务器上的工作方式。重要的是测试表单是否已提交。所以,在这种情况下,我给了提交按钮名称&#34;提交&#34;然后用PHP测试以查看表单是否已提交。如果提交了表单,并且选中了复选框,则会发生通过header()的重定向。否则,如果取消选中该复选框,则通过标题将重定向发生到result.php。您可以通过调整PHP.ini设置并添加此行来避免标题问题&#34; output_buffering = On&#34;。
注意:通常是一个enctype属性值为&#34; multipart / form-data&#34;涉及提交文件,在这种情况下,method属性应该是POST请求而不是GET;见MDN。