Javascript header()自动重定向页面,而不是在提交表单之后

Javascript header()自动重定向页面,而不是在提交表单之后,javascript,php,forms,email,Javascript,Php,Forms,Email,我创建了一个表单,当单击“提交”时,它将自动发送邮件。邮件发送后,我想引导用户进入一个感谢页面。我研究并发现了php的header()函数,并用下面的代码进行了尝试 <?php $name = $_POST['name']; $email = $_POST['email']; $phone = $_POST['phone']; $party = $_POST['party']; $message = $_PO

我创建了一个表单,当单击“提交”时,它将自动发送邮件。邮件发送后,我想引导用户进入一个感谢页面。我研究并发现了
php
header()
函数,并用下面的代码进行了尝试

<?php

        $name = $_POST['name'];
        $email = $_POST['email'];
        $phone = $_POST['phone'];
        $party = $_POST['party'];
        $message = $_POST['message'];
        $formcontent=" From: $name \n Phone: $phone \n Call Back: $call \n Party Size: $party \n Message: $message";
        $recipient = "me@gmail.com";
        $subject = "New Private Party Submission";
        $mailheader = "From: $email \r\n";


        if(mail($recipient, $subject, $formcontent, $mailheader)) {

            header("Location: https://example.com/thank-you");

        }


?>

它所做的是自动将我重定向到“谢谢”页面,显然不是我想要的

这是表单的HTML。我应该提到PHP和html在同一页上

在我这么做之前,我应该提到邮件功能确实起作用,当我被选中时,我会将电子邮件发送到那个地址。但是,它不会清除字段

我假设if()会检查mail函数是否正确执行,如果它填充了字段,就会检查,但情况显然不是这样


有什么想法吗?

这是一个带有
表单的
PHP
文件的工作示例,
提交到自己的
,发送
电子邮件
,如果电子邮件发送成功,它将重定向到
https://example.com/thank-you

代码如下:

<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>

<body>

<?php
// Check if there is a valid $_POST request that is not empty
if ($_POST)
{
    $name = $_POST['name'];
    $email = $_POST['email'];
    $phone = $_POST['phone'];
    $call= $_POST['callBack'];
    $party = $_POST['party'];
    $message = $_POST['message'];

    $formcontent="From: ".$name."\nPhone: ".$phone."\nCall Back: ".$call."\nParty Size: ".$party."\nMessage: ".$message;
    $recipient = "me@gmail.com";
    $subject = "New Private Party Submission";
    $mailheader = 'From: '.$name.' <'.$email.'>';

    $mailResult = mail($recipient, $subject, $formcontent, $mailheader);

    // better to store mail result in a variable
    if($mailResult)
    {
        header("Location: https://example.com/thank-you");
        exit();
        // use exit to terminate program and exit to header location
    }
}
?>

<form action="" method="POST">
    <table>
    <tr>
       <td><label for="name">Name: </label><input type="text" id="name" name="name" value="" /></td>
    </tr>
    <tr>
       <td><label for="email">Email: </label><input type="text" id="email" name="email" value="" /></td>
    </tr>
    <tr>
       <td><label for="phone">Phone: </label><input type="text" id="phone" name="phone" value="" /></td>
    </tr>
    <tr>
       <td><label for="callBack">Call back: </label><input type="text" id="callBack" name="callBack" value="" /></td>
    </tr>
    <tr>
       <td><label for="party">Party: </label><input type="text" id="party" name="party" value="" /></td>
    </tr>
    <tr>
       <td><label for="message">Message: </label><textarea  id="message" name="message" ></textarea></td>
    </tr>
    </table>
    <input type="submit" value="clickToEnter" />
</form>

</body>
</html>

文件标题
姓名:
电邮:
电话:
回电:
聚会:
信息:

“显然不是我想要的”不清楚为什么不,除非您在显示表单的页面中运行此代码,但显示的不是此代码。如果字段为空,则由您首先验证它们。真的不清楚具体的问题是什么您还希望
mail()
做什么?称之为两次也不太可能有多大效果。应该清除哪些字段?调用
mail()
twiceoky也没有意义。实际上,我没有两次使用mail()函数,我在不同的地方玩过它,在我发布到这里之前忘了取出它,它现在被编辑了。至于不清楚具体的问题是什么-我试图在用户单击“提交”后将其发送到新页面,但没有发生。这仍然会在加载页面时立即重定向。我想我需要顶部php中的
if()
函数,当在表单上单击submit按钮时调用该函数。@logos\u 164好的,这个php与表单在同一页上吗?我将进行编辑以解决此问题是的,很抱歉,我稍后更新了问题以反映这一点,因为评论中有人也提到了这一点。@logos\u 164好的,现在再试一次。(我添加了
if($\u POST){}
)@logos\u 164我已经修复了代码中的一些拼写错误,并对其进行了测试以证明它是有效的。我将更新我的答案,给出一个完整的工作示例。只需将我的代码复制到一个新文件中进行测试。