Обновление страницы PHP не работает внутри цикла

#php

#php

Вопрос:

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

Вот код :

Обновление: я использую php action как self, это влияет на процесс

  <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">

  // form values here 

 </form>

<?php
if(isset($_POST['sub']))
{
  //few operations
 $result=mysqli_query($con,$sql);
 if($result)
 {
  header("Location: http://www.google.com");
 }
 else
 {
  //no operation
  }
  }
  ?>
  

В чем ошибка, которую я делаю, и как я могу это решить?

Ответ №1:

Вы не можете установить новое местоположение после того, как вы уже выполнили некоторые выходные данные, подобные приведенной выше форме, потому что тогда заголовки для документа уже были сгенерированы. Заголовки могут быть отправлены только один раз, и это должно быть в самом верху вашего PHP-скрипта, если вы хотите что-то проверить.

Ответ №2:

Вы должны добавить exit; после заголовка. Если вы пропустите операторы exit; or die; , ваш скрипт продолжит выполняться после заголовка перенаправления.

Комментарии:

1. Это не объяснение вышеупомянутой проблемы. Это ложная информация

2. @hek2mgl если я ошибаюсь, можете ли вы предоставить нам правильное объяснение?

3. @SamuilBanti Нет. Даже Чак Норрис не может ответить на этот вопрос. Это связано с тем, что в вопросе не хватает достаточной информации для воспроизведения проблемы. Это типичная причина для закрытия или пометки вопроса. Вы не должны отвечать на такие вопросы.

4. О exit() и header() . Не требуется немедленно завершать работу скрипта, если вы хотите перенаправить страницу. Не имеет значения, завершается ли скрипт после header() вызова или нет.

5. Теперь, когда вопрос был обновлен, @rinukkusu предоставил правильный ответ.

Ответ №3:

Лучший способ проверить, был ли сделан запрос post, — проверить и закрыть с помощью exit;

 if($_SERVER['REQUEST_METHOD'] == 'POST');
{
    header("Location: http://www.google.com");
    exit;
}
  

Комментарии:

1. Я обновил ответ. На самом деле я не хочу, выполняется ли форма по почте или нет. Но мне нужно изменить расположение заголовка, если выполняется определенное действие.