【问题标题】:Php Contact Form issuePhp联系表问题
【发布时间】:2017-07-26 17:43:16
【问题描述】:

我在使用此代码时遇到问题。提交填写的表单后,提交按钮旁边没有显示显示消息(已发送电子邮件!)。我需要在联系表单上的提交按钮旁边显示已发送的电子邮件消息。提交表单后,即使在刷新或返回操作后,我也需要清除表单字段。请帮我解决此代码

形成动作图像:

Before Submitting the Form

After Submitting the form

<?php

$action=$_REQUEST['action'];

if ($action=="")    /* display the contact form */
    {
    ?>

    <form name="contactform" method="post" enctype="multipart/form-data">

        <input type="hidden" name="action" value="submit">

      <label for="your_name">Your Name <font color="red">*</font></label>
      <input  type="text" id="reset" name="your_name"  placeholder="Enter Your Name" maxlength="20" size="40" >

      <label for="email">Email Address <font color="red">*</font></label>
      <input  type="email" id="reset" name="email" placeholder=" Enter Your E-mail Address" maxlength="20" size="40" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,3}$" required>

      <label for="mobile_number">Mobile Number</label>
      <input  type="tel" id="reset" name="mobile_number" pattern="[0-9]{1}[0-9]{9}" placeholder="Enter Your Phone Number by Adding Country Code (eg: +91.,)" maxlength="30" size="40" >

      <label for="message">Message <font color="red">*</font></label>
      <textarea  name="message" id="reset" placeholder="Your Message Goes Here" maxlength="1000" cols="62" rows="10" required></textarea>

        <input type="submit" value="Submit">
        </form>



<?php
    }

else                /* send the submitted data */

    {

$your_name = $_REQUEST['your_name'];

$email = $_REQUEST['email'];

$mobile_number = $_REQUEST['mobile_number'];

$message = $_REQUEST['message'];

$formcontent="From: $your_name \n Email: $email \n Phone Number: $mobile_number \n Message: $message";

$recipient = "name@email.com";

$subject = "Contact Form";

$mailheader = "From: $email \r\n";

    if (($your_name=="")||($email=="")||($message==""))
        {
        echo "All fields are required, please fill <a href=\"\">the form</a> again.";
        }
    else{       
        @mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");

        echo "Email sent!";
        }
    }  
?>

【问题讨论】:

  • 它不会,因为您的消息在另一个if-else 分支中。
  • 使用 HTML 代码在特定位置显示消息。示例 - echo "&lt;div&gt;&lt;span&gt; Message &lt;/span&gt;&lt;/div&gt;";
  • @AshiqurRahman 这根本没有帮助。他的echo "Email sent!"; 也可以,这段代码还有另一个错误。
  • @AravindDevaraj 当您提交表单时,您是否收到任何消息,或者只是一个空白页?我刚刚测试了你的代码,我得到了“错误!”消息,表示mail() 功能失败...实际上我不知道是不是因为我正在测试的服务器,不确定邮件功能是否被激活。当您尝试提交表单时,您是否收到任何邮件?如果您能告诉我们提交后究竟发生了什么,那就太好了。空白页/错误消息?
  • 发送消息显示,但表单字段被删除

标签: php


【解决方案1】:

您可以在发送电子邮件后重定向页面,也可以设置$msg='email sent'; 之类的变量并在提交按钮之前调用此变量。

    $action=$_REQUEST['action'];

    if ($action!="")    /* display the contact form */
        {
$your_name = $_REQUEST['your_name'];

    $email = $_REQUEST['email'];

    $mobile_number = $_REQUEST['mobile_number'];

    $message = $_REQUEST['message'];

    $formcontent="From: $your_name \n Email: $email \n Phone Number: $mobile_number \n Message: $message";

    $recipient = "name@email.com";

    $subject = "Contact Form";

    $mailheader = "From: $email \r\n";

        if (($your_name=="")||($email=="")||($message==""))
            {
            header('location: yoururl?msg=error');
            //$msg   =  "All fields are required, please fill <a href=\"\">the form</a> again.";
            }
        else{       
            @mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");

            header('location: yoururl?msg=succss');
            //$msg   =  'Email Sent!';
            }
        }
        ?>

        <form name="contactform" method="post" enctype="multipart/form-data">

            <input type="hidden" name="action" value="submit">

          <label for="your_name">Your Name <font color="red">*</font></label>
          <input  type="text" id="reset" name="your_name"  placeholder="Enter Your Name" maxlength="20" size="40" >

          <label for="email">Email Address <font color="red">*</font></label>
          <input  type="email" id="reset" name="email" placeholder=" Enter Your E-mail Address" maxlength="20" size="40" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,3}$" required>

          <label for="mobile_number">Mobile Number</label>
          <input  type="tel" id="reset" name="mobile_number" pattern="[0-9]{1}[0-9]{9}" placeholder="Enter Your Phone Number by Adding Country Code (eg: +91.,)" maxlength="30" size="40" >

          <label for="message">Message <font color="red">*</font></label>
          <textarea  name="message" id="reset" placeholder="Your Message Goes Here" maxlength="1000" cols="62" rows="10" required></textarea>
    <?php if(isset($_REQUEST['msg']) and $_REQUEST['msg']=='success'){echo "Email sent!";}if(isset($_REQUEST['msg']) and $_REQUEST['msg']=='error'){echo "All fields are required, please fill <a href=\"\">the form</a> again.";} ?>
            <?php echo $msg; ?>
            <input type="submit" value="Submit">
            </form>

【讨论】:

  • 我需要在提交按钮附近的同一页面上显示消息
  • 我只是给你两种在提交按钮附近显示消息的方法。一个是按标题位置,另一个是按变量,你可以使用任何你想要的。
  • 发送的消息不显示兄弟
  • 你能更新你运行的代码吗?更新您当前的问题。我的意思是编辑您当前的问题。
  • 是的,兄弟我只使用了这个变量 the再次形成。";} ?>
【解决方案2】:

您的代码应该是这样的。注意isset($_POST['submit']$msgvalue=""

<?php

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

    $your_name = $_REQUEST['your_name'];

    $email = $_REQUEST['email'];

    $mobile_number = $_REQUEST['mobile_number'];

    $message = $_REQUEST['message'];

    $formcontent="From: $your_name \n Email: $email \n Phone Number: $mobile_number \n Message: $message";

    $recipient = "name@email.com";

    $subject = "Contact Form";

    $mailheader = "From: $email \r\n";

        if (($your_name=="")||($email=="")||($message==""))
            {
            $msg = "All fields are required";
            }
        else{       
            @mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");

            $msg = "Email Sent";
            }
        }  
    ?>

        <form name="contactform" method="post" enctype="multipart/form-data">

            <input type="hidden" name="action" value="submit">

          <label for="your_name">Your Name <font color="red">*</font></label>
          <input  type="text" id="reset" name="your_name"  placeholder="Enter Your Name" maxlength="20" size="40" value="">

          <label for="email">Email Address <font color="red">*</font></label>
          <input  type="email" id="reset" name="email" placeholder=" Enter Your E-mail Address" maxlength="20" size="40" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,3}$" required value="">

          <label for="mobile_number">Mobile Number</label>
          <input  type="tel" id="reset" name="mobile_number" pattern="[0-9]{1}[0-9]{9}" placeholder="Enter Your Phone Number by Adding Country Code (eg: +91.,)" maxlength="30" size="40" value="">

          <label for="message">Message <font color="red">*</font></label>
          <textarea  name="message" id="reset" placeholder="Your Message Goes Here" maxlength="1000" cols="62" rows="10" required></textarea>

            <input type="submit" name="submit" value="Submit">

          <?php echo $msg; ?>
            </form>

【讨论】:

  • 这里不需要预定义$msg。在 if/else 内部定义的变量也可以在 php.ini 外部访问。 php.net/manual/de/language.variables.scope.php
  • @ZaheerAttar 发送的电子邮件不显示兄弟
  • @ZaheerAttar 感谢兄弟工作得很好我不熟悉 php 我在刷新页面时提交表单后的另一个请求仍然显示我在刷新页面时不需要那样需要从初始填写表格
  • 发生这种情况是因为当您在提交一次后刷新页面时,它正在再次提交请求,所以本质上它显示Email Sent。您可以尝试一些 javascript 来检测页面刷新并重置表单。
  • @ZaheerAttar bro thnkx 现在我面临一个问题,即电子邮件没有收到收件人电子邮件 ID,请查找代码兄弟
猜你喜欢
  • 2013-08-15
  • 2016-06-23
  • 1970-01-01
  • 1970-01-01
  • 2016-03-26
  • 2015-06-22
  • 2013-11-02
  • 2016-02-10
  • 2017-08-26
相关资源
最近更新 更多