Перенаправление в PHP без использования метода заголовка

Эта форма contact.php работала для обработки отправки, а затем перенаправления на новую страницу, а затем внезапно просто перестала работать. Я попытался добавить обработку ошибок, а также переместить заголовок вверху перед всеми остальными, но ни один из них не работает. Форма все еще отправляет данные, как и ожидалось, это просто перенаправление, которое не работает. Любые идеи будут оценены.

<?php 
include 'config.php';
$post = (!empty($_POST)) ? true : false;
if($post)
{
    $email = trim($_POST['email']);
    $subject = "Downloaded Course Units";
    $error = '';
    if(!$error)
    {
        $mail = mail(WEBMASTER_EMAIL, $subject, $message, 
        "From: ".$email."\r\n"
        ."Reply-To: ".$email."\r\n"
        ."X-Mailer: PHP/" . phpversion());
        if($mail)
        {
            echo 'OK';
            header('location: http://www.google.com.au/');
            exit();
        }
    }
}
?>

Ответ 1

Использовать javascript.

Вместо

header('location: http://www.google.com.au/');

Использование

?>
<script type="text/javascript">
window.location.href = 'http://www.google.com.au/';
</script>
<?php

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

Но нужно сделать одну предосторожность: перенаправление Javascript перенаправит вашу страницу, даже если на странице что-то напечатано.

Убедитесь, что он не пропускает никакой логики, написанной на PHP.

Ответ 2

Замените строку header('location: http://www.google.com.au/'); на приведенный ниже код для перенаправления в php без использования функции заголовка.

$URL="http://yourwebsite.com/";
echo "<script type='text/javascript'>document.location.href='{$URL}';</script>";
echo '<META HTTP-EQUIV="refresh" content="0;URL=' . $URL . '">';

Если вам интересно, что почему я использовал метатег и JavaScript для перенаправления, тогда ответ очень прост.

Если JavaScript отключен в браузере, метатег перенаправляет страницу.

Ответ 3

заголовок не работает после include, echo. повторите попытку без включения, эхо. ИЛИ вместо заголовка функции использовать

echo '<meta http-equiv="refresh" content="0; URL=http://www.google.com.au/">';

Ответ 4

Если вы хотите перенаправить на другую страницу после HTML-кода, используйте метод javascript location.href.

Обратитесь к этому примеру кода:

<html>
    <head>
        <title> Using the href property of the Location object</title>
    </head>
    <body>
        <script language="JavaScript">
        <!--
            function show(){
                 document.location.href ="http://www.java2s.com";
            }
        -->
        </script>
        <form name="form1">
            <br>
            <input type="button" name="sethref" value="Set href" onClick='show()'>
            <br>
        </form>
    </body>
    </html>

Ответ 5

Я решил это с помощью:

function GoToNow ($url){
    echo '<script language="javascript">window.location.href ="'.$url.'"</script>';
}