我有一个联系表单,一旦提交就会发送电子邮件,并在发送时成功显示警报。我的问题是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;
是否有针对此工作或任何其他方法可以完成此任务的解决方法。请帮助。
答案 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']
?这将输入字段的值设置为用户输入的值。这意味着下次加载页面时,此值是可见的,因此在传输时将通过电子邮件发送。