Не работает header() в isset($_POST['submit'])

262
05 октября 2017, 14:26

Доброго времени суток.

Столкнулся с проблемой, но не совсем понимаю почему так происходит и как обойти.

На странице находится 2 формы, в каждой форме по 2 поля и по 1 кнопке.

<form action="" name="frm1" method="post">
  <input type="text" name="fn" id="fn"/>
  <input type="text" name="ln" id="ln"/>
  <input type="submit" name='submitlogin1'/>
</form>

и

<form action="" name="frm2" method="post">
  <input type="text" name="fn" id="fn"/>
  <input type="text" name="ln" id="ln"/>
  <input type="submit" name='submitlogin2'/>
</form>

Далее прописан обработчик:

if(isset($_POST['submitlogin1'])){
  $name = $_POST["fn"];
  header("Location: /list.php?name=$name");
} 

и

if(isset($_POST['submitlogin2'])){
  $name = $_POST["ln"];
  header("Location: /list.php?name=$name");
}

Условия обрабатываются - но переадресация не происходит.

Если я уберу со страницы 1 форму и оставлю 1 обработчик, все работает, переадресация происходит.

Почему оно не хочет работать с двумя формами и как это обойти? Спасибо!

Answer 1

Предположу, что один из этих обработчиков PHP расположен после HTML кода и в итоге header не сработает, а всё потому, что

Помните, что функцию header() можно вызывать только если клиенту еще не передавались данные. То есть она должна идти первой в выводе, перед ее вызовом не должно быть никаких HTML тэгов, пустых строк и т.п. Довольно часто возникает ошибка, когда при чтении кода файловыми функциями, вроде include или require, в этом коде попадаются пробелы или пустые строки, которые выводятся до вызова header(). Те же проблемы могут возникать и при использовании одиночного PHP/HTML файла.

<html>
<?php
/* Этот пример приведет к ошибке. Обратите внимание
 * на тэг вверху, который будет выведен до вызова header() */
header('Location: http://www.example.com/');
exit;
?>

цитата из документации: http://php.net/manual/ru/function.header.php

так что код должен быть в самом верху

READ ALSO
Передача данных между формами POST

Передача данных между формами POST

У меня в методе POST хранятся данные, которые мне нужно передавать через форму

306
Как конвертировать id в viewkey?

Как конвертировать id в viewkey?

Имеется ссылка видео https://cvphncdn

286
PHP не подключается файл Requre_once

PHP не подключается файл Requre_once

Здраствуйте! Проблема в следующем есть сайт я его разделил на блоки Head, content, sidebar и footer в indexphp require работает и подлкючает файл с базой данных...

271