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