我现在正在我的网站上工作,我遇到了一个小问题,我在PHP上并不是那么棒,但设法将一个工作正常的联系表单放在一起,代码将在下面,提交后的事情就是这样,我希望它在与按钮相同的页面上回显,就像在它下面或类似的东西,我不知道如何到达那里。
请帮忙吗?
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
&GT;
我的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>
答案 0 :(得分:2)
所以我找到了实现它的一种方法,使用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>
希望这对那些试图找到同一问题答案的人来说会派上用场:)
答案 1 :(得分:1)
使用空白操作。
表单代码后使用这个php代码:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// your php code here
}
?>
答案 2 :(得分:0)
您可以尝试将表单的操作设置为相同的php文件,然后检查其参数并打印消息。 其他方式可以通过ajax发送表单,然后使用javascript打印消息。
答案 3 :(得分:0)
使用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>
在你的php文件中,确保在尝试附加任何字符串值之前定义$ message =“”变量:
$message = '';
您正在尝试使用$ POST ['name']变量,该变量不存在且未检查是否将名称字段添加到您的html表单或只是使用表单中的电子邮件:
以html格式添加名称:
<input type="text" value="Name" id="name" name="name" class="fields">
或更改php:
$mailHeader="From:".$mailFrom."\nReply-To:".$_POST['email']."<".$mailFrom.">\n";
现在您不需要设置标题位置只是回应反馈:
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';
请确保在表单下方添加一个包含反馈的html元素,以显示反馈:
在表单提交按钮下方:
<p class="feedback"></p>
答案 4 :(得分:0)
您的表单标记应该类似于
<form method="POST" action="{LINK_TO_FORM_SUBMIT_PAGE}" .... >
在上面的代码中。您可以在成功时重定向回联系表单。
将echo "Thank You!";
替换为
header('Location: {YOUR_CONTACT_FORM_LINK}?success=true');
稍后,在您的联系表单页面中检查此成功参数。
if(isset($_GET['success']) && $_GET['success']) echo 'Thank You!';