联系人表单+重定向不起作用


Contact form + redirect doesnt work

我制作了一个简单的"姓名和电子邮件"联系表单,我希望它在提交信息后重定向到"page2.html"。

我不能让它工作。

这是我为提交表单制作的html部分。我仍然不确定"name"部分代表什么,id部分(带破折号)指的是CSS样式。但无论如何,这就是我制作联系人"姓名和电子邮件"表格的方式

<form method="post" action="submission.php" name="contactform" id="contact-form">
        <fieldset>
        <label for=name accesskey=U><span class="required">*</span> Name</label>
        <input name="name" type="text" id="name" size="30" value="" /> 
        <br />
        <label for=email accesskey=E><span class="required">*</span> Email</label>
        <input name="email" type="text" id="email" size="30" value="" />
        <br />
        <input type="submit" class="submit" id="submit-button" value="Submit" />
        </fieldset>        
</form>

php部分被回收,我尝试在最后一行输入带有重定向的标题,但它不起作用,最好的办法是在浏览器中打开一个空白页面,打印出我在表单中输入的信息。

我想在信息提交后重定向表单,所以…感谢您的帮助,提前:D

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script src="http://www.google.com/jsapi"></script>
<script type="text/javascript">google.load("jqueryui", "1.5.2");</script>
<? 
if($_POST['name']!="" ){

    $headers    = "From: Webmaster";
    $message    = 
  strtoupper($_POST['name'])."
".strtoupper($_POST['email'])."
";
    echo str_replace("'n","<br />", $message);
    $headers2   = "From: Sender Name <email@gmail.com>'nContent-Type:     text/plain; charset=UTF-8; format=flowed'nMIME-Version: 1.0'nContent-Transfer-Encoding:     8bit'nX-Mailer: PHP'n";
    $message2   = "Message
";
    mail("webmaster@gmail.com", "Subject", $message, $headers);
    mail("$_POST[email]", "Subject", $message2, $headers2);
    $myFile = "submissions.txt";
    $fh = fopen($myFile, 'a') or die("can't open file");
    $stringData =     "$_POST[name]*$_POST[email]*".$_SERVER['REMOTE_ADDR']."*".date("d-m-Y H:i")."
";
    fwrite($fh, $stringData);
    fclose($fh);
} else {
    echo "You didnt enter anything";
    ?>
    <script language="javascript">
    alert("You didnt enter anything");
    </script>
    <?
}
?>

如果脚本中有任何输出,则无法发送php重定向标头。或者将php部分更改为页面顶部,但可以在php中执行

header("location:page2.html"):

或者在php 中使用javascript重定向

echo '<script>document.location="page2.html"; </script>';
$a = mail("webmaster@gmail.com", "Subject", $message, $headers);
$b = mail("$_POST[email]", "Subject", $message2, $headers2);
if($a && $b)
{
  echo '<script>document.location="page2.html"; </script>'
}

表单中的name属性将为$_POST数组提供名称。例如,使用

<input type="text" name="awesometext"/>

在method="post"的表单中,将通过您在表单操作中定义的php脚本中的$_post['awesometext']访问该文本字段的值。

如果在发送电子邮件后,您希望使用header()将用户重定向到另一个页面,则在此之前必须在页面上生成任何输出。去掉所有的回声和html输出,所以去掉开头的html。如果您想使用header(),则可能只有php代码而没有输出。

然后您可以使用header('Location:somepage.php');直接指向somepage.php。

然后你的代码是:

<?php 
if($_POST['name']!="" ){

$headers    = "From: Webmaster";
$message    = 
strtoupper($_POST['name'])."
".strtoupper($_POST['email'])."
";
echo str_replace("'n","<br />", $message);
$headers2   = "From: Sender Name <email@gmail.com>'nContent-Type:     text/plain; charset=UTF-8; format=flowed'nMIME-Version: 1.0'nContent-Transfer-Encoding:     8bit'nX-Mailer: PHP'n";
$message2   = "Message
";
mail("webmaster@gmail.com", "Subject", $message, $headers);
mail("$_POST[email]", "Subject", $message2, $headers2);
$myFile = "submissions.txt";
$fh = fopen($myFile, 'a') or die("can't open file");
$stringData =     "$_POST[name]*$_POST[email]*".$_SERVER['REMOTE_ADDR']."*".date("d-m-Y H:i")."
";
fwrite($fh, $stringData);
fclose($fh);
//header here
header('Location:somepage.php');
} else {
echo "You didnt enter anything";
?>

在生成任何输出之前,需要调用header()。上面的代码应该可以工作。

我在函数.php中使用了下面的代码,它正在运行

add_action( 'wpcf7_mail_sent', 'wpcf7_mail_sent_callback' );
function wpcf7_mail_sent_callback() {
     header("location: https://www.example.com/thankyou/");
}