Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
表单提交和重定向后运行PHP代码_Php_Html_Forms - Fatal编程技术网

表单提交和重定向后运行PHP代码

表单提交和重定向后运行PHP代码,php,html,forms,Php,Html,Forms,我想在我的网站上提交表单后运行一些php代码。它重定向到另一页以通过电子邮件发送信息,然后使用header()返回到上一页。我希望加载一条显示消息已成功发送的小消息,但我不确定从另一个页面重定向后如何执行此操作。我希望使用php或jquery来实现这一点,下面我将介绍我正在使用的代码。我曾尝试使用session_start函数来执行此操作,但在用户离开后,回显文本仍保留在页面上 <form method="post" action="mail.php"> <tr> <

我想在我的网站上提交表单后运行一些php代码。它重定向到另一页以通过电子邮件发送信息,然后使用header()返回到上一页。我希望加载一条显示消息已成功发送的小消息,但我不确定从另一个页面重定向后如何执行此操作。我希望使用php或jquery来实现这一点,下面我将介绍我正在使用的代码。我曾尝试使用session_start函数来执行此操作,但在用户离开后,回显文本仍保留在页面上

<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。很高兴能提供帮助:)