2016-08-03 3 views
-3

У меня есть форма поиска, и если я использую это так:Почему моя форма отправки не работает с заголовком: местоположение?

<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.

Я нахожу только этот метод «Заголовок: местоположение» в сети, но он не работает для меня.

EDIT: Я решил это по-другому без перенаправления, потому что я не мог заставить его работать даже с переменными сеанса.

+1

Возможный дубликат [Как исправить «заголовки уже отправлены» ошибка в PHP] (http://stackoverflow.com/ вопросы/8028957/how-to-fix-headers-already-sent-error-in-php) – Epodax

+0

Важно то, что расположение заголовка должно быть помещено ** в начале ** вашего файла (перед HTML). –

+0

Я не получаю сообщение уже отправленное сообщение, так что нет. – Hunnenkoenig

ответ

-1

Есть 2 вещи неправильно здесь:

  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> 
+0

Спасибо, но это не так. В моем реальном коде все в порядке, но я отредактирую свой оригинальный пост. – Hunnenkoenig

+0

@Hunnenkoenig ** Не изменяйте свой вопрос **, если он аннулирует существующие ответы. Вместо этого задайте новый вопрос. –

+0

Оператор if останется ложным как 'search'! =' Search'. – Ultimater

1
<?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> 

Пожалуйста, используйте этот код. Это работает ..

+0

Проблема заключается не в перенаправлении вверху. Я пробовал разные методы. Проблема состоит в том, что кажется, что пост-данные не сохраняются при перенаправлении. – Hunnenkoenig

+2

проблема в вашем состоянии if. Я пытался с 'if ($ _POST ['submit'] == 'search')' условие, которое не работает. – Hardik

0

Ваша форма не так, это должно быть так:

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

Это действительный ответ, поскольку условие OP является 'if ($ _POST ['submit'] == 'search')', когда его HTML показывает 'value =" Search "', различие в случае. – Ultimater

+0

Вы правы. Я видел это сам и удалил свой комментарий перед тем, как вы разместили сообщение. –

Смежные вопросы