为什么我的提交表单不适用于Header:location


Why does my submit form not work with Header:location?

我有一个搜索表单,如果我这样使用它:

<form  method="post" action="search.php?go"> 
<input  type="text" name="name"> 
<input  type="submit" name="search" value="Search">
</form>

它有效。

如果我试着这样使用它,那么它不会:

<?php
    if ($_POST['submit'] == 'search') {
        header("Location:search.php?go");
      }
    ?>
    <!DOCTYPE html>
    <html>
        <head>
    </head>
    <body>
    <form  method="post" action=""> 
        <input  type="text" name="name"> 
        <input  type="submit" name="search" value="Search">
        </form>

我的网站上需要两个表单(搜索和下拉菜单),如果我对要调用的页面使用简单的"操作",那么它就不起作用,所以我试着用PHP来做。

我在网上只找到这种"标题:位置"的方法,但它对我不起作用

编辑:我在没有重定向的情况下用另一种方式解决了这个问题,因为即使使用会话变量,我也无法使其工作。

<?php
if (isset($_POST["search"])) 
{
    header("Location: search.php?go");
}
?>
<!DOCTYPE html>
<html>
    <head>
    </head>
    <body>
        <form  method="post" action=""> 
            <input  type="text" name="name"> 
            <input  type="submit" name="search" value="Search">
        </form>
    </body>
</html>

请使用此代码。这很管用。。

您的表单是错误的,应该是这样的:

<form  method="post" action=""> 
  <input type="text" name="name"> 
  <input type="submit" name="submit" value="search">
</form>

这里有两个错误:

  1. 在发送标头之前,您正在输出HTML。那行不通。一旦输出了任何内容,就太晚了,无法重定向浏览器
  2. 您没有在<?php标记中嵌入PHP,所以您只会看到它作为文本输出

我会试试这个:

<?php 
    if ($_POST['submit'] == 'search') {
        header("Location:search.php?go");
        exit;
    }
?>
<form  method="post" action=""> 
    <input  type="text" name="name"> 
    <input  type="submit" name="search" value="Search">
</form>