簡體   English   中英

使用php重置表單的問題

[英]problems resetting a form using php

我有一個聯系表格,它在提交后發送一封電子郵件,並在發送時成功顯示警報。 我的問題是 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>';
        }

    }
}

?>

是否有任何解決方法可以解決此問題或任何其他方法可以完成這項工作。 請幫忙。

將您的表格更改為

  <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

您總是在 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; ?>"

為什么要這樣做: value="<?php echo $_POST['email'] ?這將輸入字段的值設置為用戶輸入的值。這意味着下次加載頁面時,該值是可見的,因此將發送時通過電子郵件發送。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM