在重新连接之前暂停php以显示消息

时间:2014-02-27 21:46:14

标签: php

好的,我在网站上制作了一个表格,以便有人可以写下他们的信息并向电子邮件提交信息。然后它将它们重定向回网站的主页,我遇到的问题是它在消息发送时没有显示,它只是让我自动回到主页。我怎么能稍微延迟以便显示电子邮件已发送?也许我需要让它在消息框中弹出?自从我使用php以来已经有一段时间了,所以我有点生疏了。

<?php
    ob_start();

    $name = $_POST['name'];
    $email = $_POST['email'];
    $phone = $_POST['phone'];
    $message = $_POST['message'];
    $from = 'From: Subject';
    $to = 'myemailhere@example.com';
    $subject = 'Subject';

    $body = "From: $name\n E-Mail: $email\n Phone: $phone\n Message:\n $message";

    if ($_POST['submit']) {
        if (mail ($to, $subject, $body, $from)) { 
            echo '<p>Your message has been sent!</p>';
        } else { 
            echo '<p>Something went wrong, go back and try again!</p>'; 
        }
    }

    $url = 'http://example.com';

    while(ob_get_status())
    {
        ob_end_clean();
    }

    header("Location: $url");
?>

此外,我用一般信息替换了一些内容,抱歉,你们没有收到我的电子邮件。

2 个答案:

答案 0 :(得分:1)

您无法在服务器端轻松完成此操作。最好的办法是返回一个包含该消息的页面,然后通过javascript或META标记重新定向。

请参阅Redirect website after certain amount of time

上的回答

答案 1 :(得分:1)

您只能在输出任何html之前发送重定向标头。您是否考虑过使用定时元html重定向?

<meta http-equiv="refresh" content="5; url=http://homepage.com/">

或js:

window.location.href = "http://homepage.com";

注意:您也可以代替重定向,让用户知道表单已成功提交,并将其链接到之前的页面。

例如:感谢您的提交,请点击此处返回我们的网站。