У меня есть одна страница регистрации и оплаты. поток программы похож на регистрацию> подтверждение> платеж. После проверки и расчета на странице регистрации необходимо перейти на страницу подтверждения.
Мой код
<?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 или пробела перед заголовочным словом.