在不使用header方法的情况下在PHP中重定向

dee*_*les 15 php location header

这个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();
        }
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

Pup*_*pil 25

使用javascript.

代替

header('location: http://www.google.com.au/');
Run Code Online (Sandbox Code Playgroud)

使用,

?>
<script type="text/javascript">
window.location.href = 'http://www.google.com.au/';
</script>
<?php
Run Code Online (Sandbox Code Playgroud)

即使您的浏览器输出了某些内容,它也会重定向.

但是,需要做出一个预防措施:即使页面上印有某些内容,Javascript重定向也会重定向您的页面.

确保它不会跳过用PHP编写的任何逻辑.


Shu*_*mar 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 . '">';
Run Code Online (Sandbox Code Playgroud)

如果您想知道为什么我使用Meta标签和JavaScript重定向,那么答案非常简单.

如果浏览器中的JavaScript已禁用,则元标记将重定向页面.


Jav*_*nov 7

包含,回显后标题不起作用。不包括,回声再试一次。OR 而不是函数头使用

echo '<meta http-equiv="refresh" content="0; URL=http://www.google.com.au/">';
Run Code Online (Sandbox Code Playgroud)