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我已经修复了代码中的一些拼写错误,并对其进行了测试以证明它是有效的。我将更新我的答案,给出一个完整的工作示例。只需将我的代码复制到一个新文件中进行测试。