Перенаправление в 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();
}
}
}
?>

10

Решение

Используйте JavaScript.

Вместо

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

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

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

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

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

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

18

Другие решения

Заменить 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, то метатег перенаправит страницу.

15

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

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

If you want to redirect to another page after html code then use
location.href javascript method.

Ссылайтесь на этот простой код

<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>
2

Я решил это с:

function GoToNow ($url){
echo '<script language="javascript">window.location.href ="'.$url.'"</script>';
}
2
По вопросам рекламы [email protected]