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

时间:2012-07-24 09:16:03

标签: php forms redirect submit

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

我无法让它发挥作用。

这是我为提交表单制作的html部分。我仍然不确定“名称”部分代表什么,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>
    <?
}
?>

3 个答案:

答案 0 :(得分:0)

表单中的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()。上面的代码应该有效。

答案 1 :(得分:0)

$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>'
}

答案 2 :(得分:0)

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

header("location:page2.html"):

或在php中使用javascript重定向

echo '<script>document.location="page2.html"; </script>';