在 PHP 中重定向,不使用标头方法

2022-08-30 19:28:48

这个联系.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

将该行替换为以下代码以在php中重定向,而无需使用标头函数。header('location: http://www.google.com.au/');

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

如果你想知道为什么我同时使用Meta标签和JavaScript来重定向,那么答案很简单。

如果在浏览器中禁用了 JavaScript,则元标记将重定向页面。


推荐