如何在刷新后阻止表单发送?

时间:2014-03-02 23:47:57

标签: php html forms contact

我遇到了问题 - 在填写表单并单击“提交”后,它会发送我填写的信息,但是当我刷新页面时,会再次发送信息。我该怎样预防呢?我的PHP代码如下所示:

<?php
function Form()
{
    if (isset($_POST['submit']))
    {
        $to = "Test@gmail.com";
        $name = $_POST['name'];
        $email = $_POST['email'];
        $text = $_POST['text'];
        $subject = $_POST['subject'];

        if (isset($_POST['name']) && !empty($_POST['name']) &&
            isset($_POST['email']) && !empty($_POST['email']) &&
            isset($_POST['text']) && !empty($_POST['text']) &&
            isset($_POST['subject']) && !empty($_POST['subject']) &&
            mail($to, $name, $email, $text, $subject))   
        {
            echo "<div class='success'>Message has been sent!</div>";
        }
        else
        {
        }
    }
}
?>

因此,当某人填写表格时,不应在刷新页面后重新发送信息。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

正如CBroe所说,您需要将重定向添加到其他页面。

if ( isset($_POST['name']) &&    !empty($_POST['name']) &&
 isset($_POST['email']) &&   !empty($_POST['email']) &&
 isset($_POST['text']) &&    !empty($_POST['text']) &&
 isset($_POST['subject']) && !empty($_POST['subject']) &&
 mail($to, $name, $email, $text, $subject))   
{


header('Location:thankyou.php');
}

和thankyou.php

<?php
   echo "Message has been sent!";  //or whatever.
 ?>

答案 1 :(得分:0)

if ((isset($_POST['submit'])) && (!empty($_POST['name'])))

简单检查一下用户是否在其中一个字段中输入了内容。