当Div设置时,联系表格消失了吗?

时间:2014-11-25 16:14:21

标签: php html forms contact-form

好的,我有一个联系表格:

<?php
    if (isset($_POST['subtest'])) {

        $to = 'thomofawsome@gmail.com';

        $name = $_POST['firstname'];
        $lastName = $_POST['lastname'];
        $email = $_POST['email'];
        $city = $_POST['city'];
        $state = $_POST['state'];
        $zip = $_POST['zip'];
        $comments = $_POST['comments'];

        $Message = <<< STOP
        From: $name $lastName
        Email: $email
        In: $city, $state, $zip
        Comments: $comments

STOP;

        $subject = "Contact Request";
        $headers = 'From: system';

        if (mail($to, $subject, $Message, $headers)) {
            echo '<div id="thanks">Mail sent</div>';
            exit();
        }
        else {
            echo 'Mail Failed';
        }
    }
    ?>

    <form name="contact_form" action="" method="post">
        <input type="hidden" name="subtest" value="true">
        First Name:<br>
        <input type="text" name="firstname">
        <br>
        Last Name:<br>
        <input type="text" name="lastname">
        <br>
        Email Address:<br>
        <input type="text" name="email">
        <br>
        City:<br>
        <input type="text" name="city">
        <br>
        State:<br>
        <input type="text" name="state">
        <br>
        Zip:<br>
        <input type="text" name="zip">
        <br>
        Comments:<br>
        <textarea name="comments"></textarea>
        <br>

        <input id="submit" type="submit" name="submit" value="Send">
        <br>
    </form>

问题是我希望echo mail sent格式正确(绿色,在页面上正确定位等)。如你所见,我把它放在了div中。当我提交表单时,我被重定向回到表单页面,除了整个表单和页脚消失,​​邮件发送显示在页面底部(格式正确)。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

exit()函数阻止脚本的其余部分执行,包括表单和页脚。删除它,它会工作。

if (mail($to, $subject, $Message, $headers)) {
    echo '<div id="thanks">Mail sent</div>';
} else {
    echo 'Mail Failed';
}

正如Raidenance指出的那样,如果有人在发布表单后刷新此页面,它将重新发送电子邮件地址。解决此问题的更好方法是将您的联系表单发布到另一个URL(例如/contact/submit),并在该URL处完成脚本执行后,只需使用参数重定向回联系表单

header("Location:/contact?success=true");

然后在您的联系表单页面上:

if (isset($_GET['success']) && $_GET['success'] == "true") {
    echo '<div id="thanks">Mail sent</div>';
} else {
    echo 'Mail Failed';
}

这将防止用户多次重新加载和接收电子邮件的问题。