Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用联系人表单后在同一页面中进行回音_Php_Submit_Echo_Contact Form - Fatal编程技术网

Php 使用联系人表单后在同一页面中进行回音

Php 使用联系人表单后在同一页面中进行回音,php,submit,echo,contact-form,Php,Submit,Echo,Contact Form,我现在正在我的网站上工作,我遇到了一个小问题,我对PHP不是很在行,但我成功地创建了一个工作良好的联系人表单,下面是代码,问题是提交后,我希望它与按钮在同一页面上回显,比如在它下面或者类似的东西,我不知道怎么去那里 请帮帮忙 if ( mail($destination,$subject,$mailMessage,$mailHeader) ) { echo "Thank You!"; }

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

我的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>