Php 使用联系人表单后在同一页面中进行回音
我现在正在我的网站上工作,我遇到了一个小问题,我对PHP不是很在行,但我成功地创建了一个工作良好的联系人表单,下面是代码,问题是提交后,我希望它与按钮在同一页面上回显,比如在它下面或者类似的东西,我不知道怎么去那里 请帮帮忙Php 使用联系人表单后在同一页面中进行回音,php,submit,echo,contact-form,Php,Submit,Echo,Contact Form,我现在正在我的网站上工作,我遇到了一个小问题,我对PHP不是很在行,但我成功地创建了一个工作良好的联系人表单,下面是代码,问题是提交后,我希望它与按钮在同一页面上回显,比如在它下面或者类似的东西,我不知道怎么去那里 请帮帮忙 if ( mail($destination,$subject,$mailMessage,$mailHeader) ) { echo "Thank You!"; }
if ( mail($destination,$subject,$mailMessage,$mailHeader) )
{
echo "Thank You!";
}
else header('Location: index.html');
}
else header('Location: index.html');
}
else header('Location: index.html');
PS:
我想我必须改变action属性以指向它自己,但我不太知道如何改变
更新-整个代码:
<?php
//EMAIL VALIDATION
function validateEmail($value){
return preg_match('/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/', $value);
}
//CHECK VARIABLES (EMPTY/NULL OR DEFAULT)
if ( isset($_POST['last']) && $_POST['last']!="Nume complet" && isset($_POST['email']) && $_POST['email']!="Email" && isset($_POST['message']) && $_POST['message']!="Recenzie/Comentariu" ) {
//CHECK EMAIL
if ( validateEmail($_POST['email']) ) {
////////////////////// EDIT HERE /////////////////////////
//SET HERE YOUR DESTINATION EMAIL
//IT SHOULD BE FROM THE SAME DOMAIN WHERE SITE IS HOSTED
$destination="...@outlook.com";
//SET HERE YOUR EMAIL SUBJECT
$subject="Colibri";
//MESSAGE DATA (HTML FORMATTED)
$mailMessage.="<dt><strong>Nume complet:</strong></dt><dd>".$_POST['last']."</dd>";
$mailMessage.="<dt><strong>E-mail:</strong></dt><dd>".$_POST['email']."</dd>";
$mailMessage.="<dt><strong>Recenzie:</strong></dt><dd>";
$mailMessage.=nl2br($_POST['message'])."</dd></dl>";
$mailMessage = utf8_decode($mailMessage);
////////////////////// END EDIT /////////////////////////
//SENDER EMAIL
$mailFrom=$_POST['email'];
//HEADER DATA
$mailHeader="From:".$mailFrom."\nReply-To:".$_POST['name']."<".$mailFrom.">\n";
$mailHeader=$mailHeader."X-Mailer:PHP/".phpversion()."\n";
$mailHeader=$mailHeader."Mime-Version: 1.0\n";
$mailHeader=$mailHeader."Content-Type: text/html";
if ( mail($destination,$subject,$mailMessage,$mailHeader) )
{
echo "Thank You!";
}
else header('Location: index.html');
}
else header('Location: index.html'); //EMAIL VALIDATION ERROR
}
else header('Location: index.html'); //VARS ERROR
我的HTML
<div class="form">
<hr/>
<form id="myForm" method="post" action="contact_colibri.php">
<input type="text" value="Nume complet" id="last" name="last" class="fields" onFocus="if(this.value == 'Nume complet') {this.value = '';}" onBlur="if (this.value == '') {this.value = 'Nume complet';}"><br/>
<input type="text" value="Email" id="email" name="email" class="fields" onFocus="if(this.value == 'Email') {this.value = '';}" onBlur="if (this.value == '') {this.value = 'Email';}"><br/>
<textarea cols="20" rows="5" id="message" name="message" class="fields" onFocus="if(this.value == 'Recenzie/Comentariu') {this.value = '';}" onBlur="if (this.value == '') {this.value = 'Recenzie/Comentariu';}">Recenzie/Comentariu</textarea><br/>
<center><button class="button">Trimite</button></center>
</form>
</div>
最近的情况/Comentariu
三聚体
< /代码> 使用空白动作。
在表单代码之后,请使用以下php代码:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// your php code here
}
?>
您可以尝试将表单的操作设置为相同的php文件,然后检查其参数并打印消息。
另一种方法是通过ajax发送表单,然后使用javascript打印消息。使用jquery使用ajax发布表单并在php中回显结果:
确保包含jquery:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript">
$('form').on("submit", function(){
var formData = $(this).serialize();
$.ajax({
type: "POST",
url: "contact_colibri.php",
data: formData,
success: function(result){
$('.feedback').html(result);
}
});
return false;
});
</script>
您正在尝试使用$POST['name']变量,该变量不存在且未检查是否将名称字段添加到html表单或仅使用表单中的电子邮件:
以html格式添加名称:
<input type="text" value="Name" id="name" name="name" class="fields">
确保在表单下方添加带有反馈的html元素以显示反馈:
echo 'Your email did not validate';
echo 'There was a problem sending your email, try again later...
echo 'You did not enter all te required fields';
在表单提交按钮下方:
<p class="feedback"></p>
您的表单标签应该类似
<form method="POST" action="{LINK_TO_FORM_SUBMIT_PAGE}" .... >
稍后,在联系人表单页面中检查此成功参数
if(isset($_GET['success']) && $_GET['success']) echo 'Thank You!';
所以我找到了一种实现它的方法,使用iframe,您只需添加:
<div class="form">
<hr/>
<form id="myForm" method="post" action="contact.php" target="myIframe">
...
...
</form>
<iframe name="myIframe" frameborder="0" border="0" cellspacing="0" style="border-style: none;width: 100%; height: 120px;"></iframe>
...
...
希望这对那些试图找到相同问题答案的人有用:)提交表单时会发生什么?你有一个if语句和3个else语句。你能发布你剩下的代码吗?@lgupt当然,我会在我们谈论代码时更新帖子。其他else语句将我带到索引,而不是显示错误消息。如果目标、主题或消息未写入表单,我没有为“未写入主题,请选择主题”等创建回显文本。您的表单是否在单独的文件中?请确保:“contact_colibri.php”正在运行,是表单页吗?@doydoy44是的,否则我将不会收到电子邮件:)我已经这样做了…它唯一做的是重定向到我的索引页而不回显任何消息…你的表单在索引页?不,我的表单不在索引页,只是当我进行了你建议的更新时,单击“提交”按钮后,它会自动将我重定向到索引页。您收到电子邮件了吗?我猜是有一些错误,在这种情况下,它将返回到索引页。我确实收到了电子邮件,只是再次尝试了一下。这就是我如何添加您给我的内容以及它下面的成功参数:“{header('Location:contact_colibri.php?success=true');”}我尝试了,它不起作用…我在脚本标记之间添加了您在我的html页面上提供的jquery脚本,但它仍然不起作用。。。
header('Location: {YOUR_CONTACT_FORM_LINK}?success=true');
if(isset($_GET['success']) && $_GET['success']) echo 'Thank You!';
<div class="form">
<hr/>
<form id="myForm" method="post" action="contact.php" target="myIframe">
...
...
</form>
<iframe name="myIframe" frameborder="0" border="0" cellspacing="0" style="border-style: none;width: 100%; height: 120px;"></iframe>