Местоположение заголовка не работает на реальном сервере

У меня есть одна страница регистрации и оплаты. поток программы похож на регистрацию> подтверждение> платеж. После проверки и расчета на странице регистрации необходимо перейти на страницу подтверждения.
Мой код

<?php ob_start(); session_start(); include("header.php"); include("ini.php"); date_default_timezone_set('Asia/Brunei'); header('Cache-Control: max-age=900'); if (isset($_POST['submit'])) { $error = 0; //validations if ($error <= 0) { //do some calculation header('location:confirm.php'); } } <?php ob_flush(); ?> 

Элемент управления введен в if ($ error <= 0), но остался на странице регистрации.

Я пробовал много способов, как

  header('location:confirm.php', true, 302); 

вместо

 header('location:confirm.php'); 

удален

 ob_start() and ob_flush() add exit() after header() 

затем он переходит на пустую страницу.

Также попробуйте использовать

 echo '<script type="text/javascript">'; echo 'window.location.href="confirm.php";'; echo '</script>'; 

Затем элемент управления переходит на страницу подтверждения, но, по-видимому, URL-адрес выглядит как registration.php

Но заголовок ('location: confirm.php'); отлично работает на моем локальном сервере. Кто-нибудь, пожалуйста, помогите мне решить эту проблему. Есть ли альтернативный способ для header (). Ждем вас, ребята .. Спасибо

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

Также попробуйте изменить заголовок ('Location: confirm.php'); (Примечание L является капиталом, так как его работа на локальном сервере может быть проблемой со строгим типом php, попробуйте это раз)

 $host = $_SERVER['HTTP_HOST']; $uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\'); $extra = 'confirm.php'; header("Location: http://$host$uri/$extra"); 

используйте ob_end_flush() в конце. Это должно работать как шарм.

У меня были те же проблемы в течение многих лет, но сегодня я обнаружил, что у вас не должно быть никакого html или пробела перед заголовочным словом.