表单提交和重定向后运行PHP代码
我想在我的网站上提交表单后运行一些php代码。它重定向到另一页以通过电子邮件发送信息,然后使用header()返回到上一页。我希望加载一条显示消息已成功发送的小消息,但我不确定从另一个页面重定向后如何执行此操作。我希望使用php或jquery来实现这一点,下面我将介绍我正在使用的代码。我曾尝试使用session_start函数来执行此操作,但在用户离开后,回显文本仍保留在页面上表单提交和重定向后运行PHP代码,php,html,forms,Php,Html,Forms,我想在我的网站上提交表单后运行一些php代码。它重定向到另一页以通过电子邮件发送信息,然后使用header()返回到上一页。我希望加载一条显示消息已成功发送的小消息,但我不确定从另一个页面重定向后如何执行此操作。我希望使用php或jquery来实现这一点,下面我将介绍我正在使用的代码。我曾尝试使用session_start函数来执行此操作,但在用户离开后,回显文本仍保留在页面上 <form method="post" action="mail.php"> <tr> <
<form method="post" action="mail.php">
<tr>
<td class="label">Name:</td>
<td class="input"><input type="text" maxlength="40" name="name" pattern="[a-zA-Z0-9]+" title="Please enter your name." required></td>
</tr>
<tr>
<td class="label">Email:</td>
<td class="input"><input type="email" maxlength="24" name="email" title="Please enter an email address." required></td>
</tr>
<tr>
<td class="label">Subject:</td>
<td class="input"><input type="text" maxlength="24" name="subject" title="Please enter a subject." required></td>
</tr>
<tr>
<td class="label">Message:</td>
<td class="input"><textarea rows="9" maxlength="1000" name="message" title="Please enter a message." required></textarea></td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" value="Submit">
</td>
</tr>
</form>
<?php
$to = "kouen922@gmail.com";
$subject = "Message From Your Website: ".trim(htmlspecialchars($_POST["subject"]));
$message = trim(htmlspecialchars($_POST["message"]));
$headers = "Reply To: ".trim(htmlspecialchars($_POST["email"]))."" ."\r\n". "From: " .trim(htmlspecialchars($_POST["name"]))."";
mail($to,$subject,$message,$headers);
header("Location: index.php#contact");
?>
姓名:
电邮:
主题:
信息:
不要使用php,而是使用Jquery(因为您提到过它),并利用它的潜力,使用ajax post请求发送表单数据。通过这种方式,您可以停留在同一页面上,而不必导航到另一页面(因为您正在返回),并且您还可以在post请求完成后显示消息,ajax post方法在请求完成后返回回调
简单
header("Location: index.php?thankyou#contact");
然后为
设置一个条件($\u GET['Thankyu'])
并打印一条消息。根据您的描述:表单页面--php电子邮件页面--返回表单页面,然后只需将php电子邮件部分添加到表单页面:
index.php:
<?php
$data = init_data();
if ($data['cmd']) {
$err = main_send($data);
}
if (!$data['cmd'] || $err) {
main_form($data, $err);
}
function init_data() {
$arr = ['cmd', 'name', 'email', 'subject', 'message'];
foreach ($arr as $k) {
$data[$k] = isset($_POST[$k]) ? trim(htmlspecialchars($_POST[$k])) : '';
}
return $data;
}
function main_send($data) {
if (!$data['name']) {
return 'What is your name?';
} elseif (!$data['email']) {
return 'What is your email?';
} elseif (!filter_var($data['email'], FILTER_VALIDATE_EMAIL)) {
return 'Your email is not valid';
} elseif (!$data['message']) {
return 'Please say something';
}
$to = 'kouen922@gmail.com';
$subject = 'Message From Your Website: ' . $data['subject'];
$message = trim(htmlspecialchars($_POST["message"]));
$headers = 'Reply To: ' . $data['email'])) . "\r\nFrom: " . $data['name']));
mail($to, $subject, $message, $headers);
echo '<p>Thank you very much for the feedback</p>';
}
function main_form($data, $err = '') {
if ($err) {
echo '<p class="err">' , $err , '</p>';
}
echo 'your original form html here ...';
}
尝试以下代码:
表格代码
<div id="message"></div>
<form method="post" id="email-form" action="">
<tr>
<td class="label">Name:</td>
<td class="input"><input type="text" maxlength="40" id="name" name="name" pattern="[a-zA-Z0-9]+" title="Please enter your name." required></td>
</tr>
<tr>
<td class="label">Email:</td>
<td class="input"><input type="email" maxlength="24" id="email" name="email" title="Please enter an email address." required></td>
</tr>
<tr>
<td class="label">Subject:</td>
<td class="input"><input type="text" maxlength="24" id="subject" name="subject" title="Please enter a subject." required></td>
</tr>
<tr>
<td class="label">Message:</td>
<td class="input"><textarea rows="9" id="message" maxlength="1000" name="message" title="Please enter a message." required></textarea></td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" value="Submit">
</td>
</tr>
</form>
姓名:
电邮:
主题:
信息:
email.php代码
<?php
//email.php
$to = "kouen922@gmail.com";
$subject = "Message From Your Website: ".trim(htmlspecialchars($_POST["subject"]));
$message = trim(htmlspecialchars($_POST["message"]));
$headers = "Reply To: ".trim(htmlspecialchars($_POST["email"]))."" ."\r\n". "From: " .trim(htmlspecialchars($_POST["name"]))."";
mail($to,$subject,$message,$headers);
echo 'Mail was successfully send';
?>
Jquery代码:
<script>
$(document).ready(function () {
$("#email-form").submit(function(event){
event.preventDefault();
var email= $('#email').val();
var name= $('#name').val();
var subject= $('#subject').val();
var messege = $('#messege').val();
$.ajax({
url: "email.php",
type:"POST",
data: 'email='+email + '&name='+name +'&subject='+subject+'&message='+message,
success: function(data){
$('#message').html(data);
setTimeout(function(){ //redirect after 5 sec
window.history.go(-1); // Simulates a back button click
},5000); // time in milli sec
}
});
});
});
</script>
$(文档).ready(函数(){
$(“#电子邮件表单”)。提交(功能(事件){
event.preventDefault();
var email=$('#email').val();
var name=$('#name').val();
var subject=$('#subject').val();
var messege=$('#messege').val();
$.ajax({
url:“email.php”,
类型:“POST”,
数据:'email='+email+'&name='+name+'&subject='+subject+'&message='+message,
成功:功能(数据){
$('#message').html(数据);
setTimeout(函数(){//5秒后重定向
window.history.go(-1);//模拟单击后退按钮
},5000);//以毫秒为单位的时间
}
});
});
});
太好了,这帮了大忙。@JordanU。很高兴能提供帮助:)