使用联系表单后在同一页面中回显

时间:2014-03-14 14:56:08

标签: php submit echo contact-form

我现在正在我的网站上工作,我遇到了一个小问题,我在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>

5 个答案:

答案 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!';