【问题标题】:Contact form issues on HTML5 themeHTML5 主题的联系表单问题
【发布时间】:2017-01-01 09:20:30
【问题描述】:

请原谅我,因为这可能有一个非常简单的解决方案,我只是非常缺乏经验。

我正在使用 Massive HTML5 主题,但我的联系表单无法正常工作。我以为我按照指示做了,但是当我点击提交时仍然没有任何反应。

<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>

<form method="post" action="contact-us.php" id="form" role="form" class="contact-comments">
  <div class="row">
    <div class="col-md-6 ">
      <div class="form-group">
        <!-- Name -->
        <input type="text" name="name" id="name" class=" form-control" placeholder="Name *" maxlength="100" required="">
      </div>
      <div class="form-group">
        <!-- Email -->
        <input type="email" name="email" id="email" class=" form-control" placeholder="Email *" maxlength="100" required="">
      </div>
      <div class="form-group">
        <!-- phone -->
        <input type="text" name="phone" id="phone" class=" form-control" placeholder="Phone" maxlength="100">
      </div>
    </div>
    <div class="col-md-6 form-group">
      <div class="form-group">
        <!-- Comment -->
        <textarea name="text" id="text" class="cmnt-text form-control" placeholder="Comment" maxlength="400"></textarea>
      </div>
      <div class="form-group full-width">
        <button type="submit" class="btn btn-small btn-dark-solid ">
          Send Message
        </button>
      </div>
    </div>
  </div>
</form>
<?php
// Note: filter_var() requires PHP >= 5.2.0
if ( isset($_POST['name']) && isset($_POST['email']) && isset($_POST['subject']) && isset($_POST['comments']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) ) {

    // detect & prevent header injections
    $mailTest = "/(content-type|bcc:|cc:|to:)/i";
    foreach ( $_POST as $key => $val ) {
        if ( preg_match( $mailTest, $val ) ) {
            exit;
        }
    }

    $headers = 'From: ' . $_POST["name"] . '<' . $_POST["email"] . '>' . "\r\n" .
    'Reply-To: ' . $_POST["email"] . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

    $success = mail( "myemail@mail.com", $_POST['subject'], $_POST['comments'], $headers );
    //  Replace with your email

    if ($success) {
        ?>
        <div style="color:#3c763d;padding:30px;text-align:center">
            <strong>Success!</strong> Message has been sent successfully.
        </div>
        <?php
    }
}

当然,我把 myemail@mail.com 改成了我的地址。

感谢您的帮助。

【问题讨论】:

  • 你的网址是什么?

标签: php html contact-form


【解决方案1】:

mail() 函数如果邮件被成功接收,则返回 TRUE,否则返回 FALSE。

请务必注意,仅仅因为邮件被接受投递,并不意味着邮件实际上会到达预定目的地。

请参考Documentation。

你也可以通过其他php库来发送邮件,比如phpmailer。

【讨论】:

    【解决方案2】:

    如果您在 Windows 上使用 XAMPP,如果在 Mac 上使用 MAMP。

    如果没有任何服务器端连接,PHP 联系表单将不起作用。我有和你现在类似的问题。更多信息请查看我的帖子Configuration issue with PHP contact form。

    【讨论】:

    • 我已经将它上传到我的主机,所以这不是问题,对吗?
    • @RebeccaWalsh 但是您仍然可能想测试您拥有的代码是否在本地工作,而不是直接将其上传到主机。使用 XAMPP 或 MAMP,您可以让您的计算机认为他是主机。顺便说一句,您的 contact-us.php 的路径是否正确?
    【解决方案3】:
     if ( isset($_POST['name']) && isset($_POST['email']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) 
    

    从您的 if 条件中删除 && isset($_POST['subject']) && isset($_POST['cmets']) 因为它们在您的 HTML 表单中没有名称 subject 和 cmets 的输入。

    【讨论】:

      猜你喜欢
      • 2013-01-20
      • 2014-09-13
      • 2012-03-25
      • 2016-03-26
      • 2023-01-05
      • 1970-01-01
      • 1970-01-01
      • 2016-08-28
      • 1970-01-01
      相关资源
      最近更新 更多