【问题标题】:I want to echo message when form is submitted我想在提交表单时回显消息
【发布时间】:2016-04-02 14:20:29
【问题描述】:

我不太擅长 PHP(更多的是前端开发人员),我正在为客户做一个网站。到目前为止,我已经完成了所有工作,除了一件事。当用户填写联系表格并成功提交时,我想显示一条消息,告诉他们电子邮件已发送。我已经设置了 div 我只是不知道用 PHP 来执行它。

<div class="sent">Email has been sent.</div>
    <form action="" method="POST" class="contact-form"> 
    <img class="close" src="images/close-icon.png">     
        <div class="top-title">Contact Us</div>
        <input type="hidden" name="action" value="submit"> 
        <div class="input-title">Name*</div> 
        <input class="input" name="name" type="text" value="" size="30" required><br>
        <div class="input-title">Phone Number*</div> 
        <input class="input" name="phone" type="text" value="" size="30" required><br>
        <div class="input-title">Email Address*</div>
        <input class="input" name="email" type="text" value="" size="30" required><br> 
        <div class="input-title">How did you hear about us?</div>  
        <input class="input" name="company" type="text" value="" size="30"/><br> 
        <div class="input-title">Let us know how we can help you</div>
        <textarea class="textarea" name="message" rows="7" cols="30"></textarea><br> 
        <div class="required">*Fill is required</div>
        <input class="submit-button" type="submit" value="Send Email"/> 
    </form> 
    <?php              
        { 
        $name=$_POST['name']; 
        $email=$_POST['email']; 
        $phone=$_POST['phone']; 
        $company=$_POST['company']; 
        $message= "\r\nName: " . $_POST['name'] ."\r\nPhone Number: ". $_POST['phone']."\r\nEmail: ". $_POST['email'] ."\r\nHow you know the company: ".$_POST['company'] ."\r\nReason for message: ".$_POST['message'];

            $from="From: $name<$email>\r\nReturn-path: $email"; 
            $subject="GS Website Message"; 
            mail("name@email.com", $subject, $message, $from); 
        }
    ?> 

【问题讨论】:

  • if(condition) { do something } else { do something else } 并将该逻辑应用于您的 mail() 函数。 教一个人如何钓鱼...我总是说 ;-)
  • 那么你有大括号{code},它不应该在那里,你很可能会返回未定义的索引通知,但你没有检查错误php.net/manual/en/function.error-reporting.php。看到您在同一个文件中使用 HTML 表单和 PHP。您也可以在$message... 中接受 XSS 注入,因此只需使用您已经声明它们的变量。
  • 我使用的是我在网上找到的示例,哈哈。就像我说的,我真的不知道如何用 PHP 编码。该表单实际上工作正常,它验证了我需要什么并将所有字段值通过电子邮件发送给我。我要做的就是在提交表单时添加一条消息。

标签: php forms submit


【解决方案1】:

更改:(并使用条件语句)

mail("name@email.com", $subject, $message, $from);

到:

if(mail("name@email.com", $subject, $message, $from)){
   $sent = "Message sent";
}

然后修改:

<div class="sent">Email has been sent.</div>

读作:

<div class="sent"><?php if(!empty($sent)) { echo $sent; } ?></div>

如果您是 PHP/forms 新手,最好也检查一下您的输入是否为空,否则您将面临收不到邮件或收到空数据的风险。

也在条件语句中设置。

即:使用 NOT 为空:! 是 PHP 中的 NOT 运算符。

if(!empty($_POST['var'])){...}

编辑:

逻辑需要颠倒。

首先,将 PHP 放在 HTML 表单上方。

我还在您的提交按钮中添加了一个submit 名称属性,在 div 中带有一个条件语句和一个ternary operator

<?php

 if(isset($_POST['submit'])){

        $name=$_POST['name']; 
        $email=$_POST['email']; 
        $phone=$_POST['phone']; 
        $company=$_POST['company']; 
        $message= "\r\nName: " . $_POST['name'] ."\r\nPhone Number: ". $_POST['phone']."\r\nEmail: ". $_POST['email'] ."\r\nHow you know the company: ".$_POST['company'] ."\r\nReason for message: ".$_POST['message'];

            $from="From: $name<$email>\r\nReturn-path: $email"; 
            $subject="GS Website Message"; 


if(mail("email@example.com", $subject, $message, $from)){

$sent = "Message sent";

    }
}
    ?> 

<div class="sent"><?php echo isset($sent) ? $sent : ''; ?></div>


    <form action="" method="POST" class="contact-form"> 

    <img class="close" src="images/close-icon.png">     


        <div class="top-title">Contact Us</div>
        <input type="hidden" name="action" value="submit"> 
        <div class="input-title">Name*</div> 
        <input class="input" name="name" type="text" value="" size="30" required><br>
        <div class="input-title">Phone Number*</div> 
        <input class="input" name="phone" type="text" value="" size="30" required><br>
        <div class="input-title">Email Address*</div>
        <input class="input" name="email" type="text" value="" size="30" required><br> 
        <div class="input-title">How did you hear about us?</div>  
        <input class="input" name="company" type="text" value="" size="30"/><br> 
        <div class="input-title">Let us know how we can help you</div>
        <textarea class="textarea" name="message" rows="7" cols="30"></textarea><br> 
        <div class="required">*Fill is required</div>
        <input class="submit-button" type="submit" value="Send Email" name="submit"/> 
    </form> 

【讨论】:

  • @user2584238 不客气。并假设您的表单是.php - 我不确定您的表单/PHP 是否在同一个文件中。
  • 我尝试了您的代码,但感谢消息总是出现,即使我将“已发送”div 设置为 display:none。
  • @user2584238 给我几分钟。
  • @user2584238 请稍等。我意识到逻辑需要颠倒过来。首先是 PHP,然后是 HTML 表单。在 Edit 下重新加载我的答案。完全按照图示使用。
  • 还是一样,页面加载时仍然出现消息。不知道怎么了。我什至将消息“div sent”放在页面中心的绝对位置内,它仍然放在屏幕的左上角。
【解决方案2】:

$password=md5($_POST ['password']);

$password3 =md5($_POST ['password2']);
if($password != $password3)
{
   $message = "Passwords do not match";

}

etc.

you need add 

<form>
<div class="form-group">
                                            <input type="password" name="password"  id="password" class="form-control" placeholder="Password *" value="" required/>
                                        </div>
                                        <div class="form-group">
                                            <div class="message"><?php if(!empty($message)) { echo $message; } ?></div>
                                            <input type="password" name="password2" class="form-control" id="password2" placeholder="Confirm Password *" value="" required/>
                                        </div>
</form>

【讨论】:

  • 请编辑您的答案并根据您的描述拆分代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-16
  • 2016-10-11
  • 1970-01-01
  • 1970-01-01
  • 2017-11-08
  • 1970-01-01
相关资源
最近更新 更多