使用php重置表单的问题

时间:2015-10-02 15:57:22

标签: javascript php jquery html email

我有一个联系表单,一旦提交就会发送电子邮件,并在发送时成功显示警报。我的问题是1)发送后,电子邮件表格仍然有内容。 2)如果我刷新页面,则会再次发送包含先前详细信息的电子邮件。为了解决这个问题,我在php中使用了以下代码,该代码正在通过发送电子邮件来完成更新工作。

header("Location: contact.php");
exit;

现在我的问题是警报不再显示这是真的,因为警报在我的HTML中并且标题刷新页面并且它永远不会到达HTML中的警报(使用php echo显示)。这是HTML代码:

<div class="container">
  <div class="row">
    <div class="col-md-6 col-md-offset-3" id="emailForm">
      <h1 class="center">Email Form</h1>
      <?php echo $result; //header( "Location: contact.php"); //exit; ?>
      <p>Please get in touch ! I will get back to you as soon as I can !!</p>
      <form method="post" id="contactForm">
        <div class="form-group">
          <label for="name">Your Name</label>
          <input type="text" name="name" class="form-control" placeholder="Your Name" value="<?php echo $_POST['name'] ?>" />
        </div>

        <div class="form-group">
          <label for="email">Your Email</label>
          <input type="email" name="email" class="form-control" placeholder="Your Email" value="<?php echo $_POST['email'] ?>" />
        </div>

        <div class="form-group">
          <label for="message">Message</label>
          <textarea class="form-control" name="message">
            <?php echo $_POST[ 'message'] ?>
          </textarea>
        </div>
        <input type="submit" name="submit" id="send" class="btn btn-success btn-lg center" value="Submit" />
      </form>
    </div>
  </div>
</div>

这是PHP代码:

<?php

if($_POST['submit']) {

    if(!$_POST['name']){

        $error.="<br>Please enter your name";
    }
    if(!$_POST['email']){

        $error.="<br>Please enter your email address";
    }
    if(!$_POST['message']){

        $error.="<br>Please enter a message";
    }

    if ($_POST['email']!= "" AND !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {

        $error.="<br>Please enter a valid email address";
    } 

    if( $error )
    {
        $result='<div class="alert alert-danger"><strong>There were error(s):'.$error.'</strong></div>';
    }

    else {

        if(mail("madistackcloud@gmail.com","Message from Deepak", "Name: ".$_POST['name']."Email: ".$_POST['email']."Message: ".$_POST['message'])) {

            $result='<div class="alert alert-success alert-dismissible"><strong>Thank you! I\'ll be in touch.</strong></div>';   


        }

        else
        {
            $result='<div class="alert alert-danger alert-dismissible"><strong>Oops! Something went wrong. Please try again !</strong></div>';
        }

    }
}

&GT;

是否有针对此工作或任何其他方法可以完成此任务的解决方法。请帮助。

3 个答案:

答案 0 :(得分:0)

将表单更改为

  <form method="post" id="contactForm">
    <div class="form-group">
      <label for="name">Your Name</label>
      <input type="text" name="name" class="form-control" placeholder="Your Name" value="" />
    </div>

    <div class="form-group">
      <label for="email">Your Email</label>
      <input type="email" name="email" class="form-control" placeholder="Your Email" value="" />
    </div>

    <div class="form-group">
      <label for="message">Message</label>
      <textarea class="form-control" name="message"></textarea>
    </div>
    <input type="submit" name="submit" id="send" class="btn btn-success btn-lg center" value="Submit" />
  </form>

如果您不想显示发送的内容,请不要对输入的值使用echo $POST

答案 1 :(得分:0)

您总是在html部分回显帖子数据。如果出现错误,您只想回显数据。

value="<?php echo $_POST['name'] ?>"

在上面的控制代码中执行类似

的操作
$name = cleanInput($_POST['name']);
$email = cleanInput($_POST['name']);
// etc...

然后在你的

if( $error )
...
else
{
    $name = "";
    $email = "";

    sendMail();
    // etc...

然后回到你的html:

value="<?php echo $name; ?>"

答案 2 :(得分:0)

为什么这样做:value="<?php echo $_POST['email']?这将输入字段的值设置为用户输入的值。这意味着下次加载页面时,此值是可见的,因此在传输时将通过电子邮件发送。