【问题标题】:Submit Form Redirect Back to index.html提交表单重定向返回 index.html
【发布时间】:2017-04-16 00:37:05
【问题描述】:

我正在为朋友创建一个网站,这是我的第一个网站。目前也将其启动并托管。

创建了一个基本的“联系我”表单,用户可以在其中填写信息,然后发送电子邮件。

问题是:点击提交后,如何在 php.ini 响应“您的表单已提交”后让网页重定向回 index.html。

这里是html表单部分:

<div class="contactme" id="contactme">  
        <form class="form-horizontal" method="post" name="myemailform" action="form-to-email.php">
          <fieldset>
            <h2>Let's Create Together</h2>
            <hr class="small">
            <div class="form-group">
              <label class="col-lg-2 control-label">Name</label>
              <div class="col-lg-10">
                <input type="text" class="form-control" name="name" placeholder="Name">
              </div>
            </div>
            <div class="form-group">
              <label class="col-lg-2 control-label">E-Mail</label>
              <div class="col-lg-10">
                <input type="email" class="form-control" name="visitor_email" placeholder="E-Mail">
              </div>
            </div>
            <div class="form-group">
              <label class="col-lg-2 control-label">Message</label>
              <div class="col-lg-10">
                <textarea class="form-control" rows="8" name="message"></textarea>
              </div>
            </div>
            <div class="form-group">
              <div class="col-lg-10 col-lg-offset-2">
                <button type="reset" class="btn btn-default">Cancel</button>
                <button type="submit" name="submit" id="submitbutton" class="btn btn-primary mainButton">Submit</button>
              </div>
            </div>
          </fieldset>
        </form>
</div>

这里是单独的 .php 代码。这是在不同的文件上。

<?php
if (!isset ($_POST ['submit']))
{
    //This page should not be accessed directly. Need to submist the form. 
    echo "error, you need to submit the form!";
}

$name = $_POST ['name'];
$visitor_email = $_POST ['visitor_email'];
$message = $_POST ['message'];

//Validation

if(empty ($name)||empty ($visitor_email))
{
    echo "Name and email are mandatory!";
    exit();
}

else {
    echo "Submit Successful!";
    header("Location: index.html");
    exit(); 
}


$email_from = 'info@joshkelley.video'; //<== Put your email address here
$email_subject = "New Form Submission";
$email_body = "You have received a new message from the user $name.\n".
    "E-mail Address: $visitor_email\n".
    "Here is the message: $message\n".

$to = "brandontetrick@gmail.com"; // <==Put your email address here
$headers = "From: $email_from \r\n"; 

//Send the email! 

mail($to,$email_subject,$email_body,$headers);
//done
?>

任何帮助或提示都很棒。谢谢!

【问题讨论】:

  • 为了更好地工作,请使用 Ajax。这将防止页面重新加载,并且所有内容都将在几秒钟内在同一页面上执行
  • 谢谢,我将如何使用 Ajax 来做到这一点?

标签: php


【解决方案1】:

如果你输出 ANYTHING 甚至前面的空格,header() 函数将不起作用。但是您可以将成功消息存储到会话变量中。

首先,您必须将 index.html 重命名为 index.php

将 session_start() 函数添加到 index.php 和表单脚本(使用 $_SESSION 变量的任何地方)的最顶部(同样,以前从未输出过任何内容):

<?php
session_start();
//....

然后改变

echo "Submit Successful!";
header("Location: index.html");
exit(); 

为此

$_SESSION['success_msg'] =  "Submit Successful!"; 
header("Location: index.html");
exit(); 

在你的 index.php 中

<?php
session_start();

if(isset($_SESSION['success_msg'])) {
    echo $_SESSION['success_msg'];
    unset($_SESSION['success_msg']); // unset this after outputting, else it will keep showing
}

【讨论】:

  • 谢谢,试试看。如果我将 index.html 文件更改为 index.php 文件,更改文本编辑器上的任何设置是否会更改代码中的任何内容?
  • 不 :) 它会保持不变。
猜你喜欢
  • 1970-01-01
  • 2020-02-13
  • 2015-09-13
  • 2013-04-13
  • 2021-02-15
  • 2011-12-26
  • 1970-01-01
相关资源
最近更新 更多