PHP联系表单

时间:2016-05-03 08:36:22

标签: php html xampp bitbucket contact-form

我已经看到StackOverflow上有许多类似于我的问题,但我认为我还没能找到正确的问题解决方案。

我所遇到的问题与接收电子邮件功能有关 - 基本上是网站的与我们联系部分,用户可以在其中填写基于html的表单,然后按{{1}这条消息将发送到我的电子邮箱。

我使用XAMPP进行开发,并在localhost上运行Apache服务器和Mercury。即使验证显示成功 - 电子邮件也无法通过。

  1. 我尝试将send message添加到HTML部分,但发现method="post"已包含在内。
  2. 仔细检查Mercury使用的端口,并将其与type: "POST"中提到的端口进行比较,两者都设置为php.ini
  3. 我还尝试部署到Bitbucket pages和Azure,从localhost迁移到实时托管。
  4. 我仔细阅读了这篇非常详细的post。将这个网站上传到直播主机的想法来自这篇文章。

    25

    <?php
    $name = trim($_POST['name']);
    $email = trim($_POST['email']);
    $message = trim($_POST['message']);
    
    
    if( isset($name) && isset($email) ) {
    
        // Avoid Email Injection and Mail Form Script Hijacking
        $pattern = "/(content-type|bcc:|cc:|to:)/i";
        if( preg_match($pattern, $name) || preg_match($pattern, $email) || preg_match($pattern, $message) ) {
            exit;
        }
    
        $to = "myemail@gmail.com";
        $sub = "$name from Cv";
        // HTML Elements for Email Body
        $body = <<<EOD
        <strong>Name:</strong> $name <br>
        <strong>Email:</strong> <a href="mailto:$email?subject=feedback" "email me">$email</a> <br> <br>
        <strong>Message:</strong> $message <br>
    EOD;
    
        $headers = "From: $name <$email>\r\n";
        $headers .= 'MIME-Version: 1.0' . "\r\n";
        $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    
        mail($to, $sub, $body, $headers);
    }
    
    ?>
    
    $("#contact-form-1").submit(function(e) {
      e.preventDefault();
      var success = $(this).find('.email-success'),
          failed = $(this).find('.email-failed'),
          loader = $(this).find('.email-loading'),
          postUrl = $(this).attr('action');
    
      success.fadeOut(100); failed.fadeOut(100); loader.fadeOut(100);
    
      var data = {
        name: $(this).find('.contact-name').val(),
        email: $(this).find('.contact-email').val(),
        message: $(this).find('.contact-message').val()
      };
    
      if ( isValidEmail(data['email']) && (data['message'].length > 1) && (data['name'].length > 1) ) {
        $.ajax({
          type: "POST",
          url: postUrl,
          data: data,
          beforeSend: function() {
            loader.fadeIn(500);
          },
          success: function(data) {
            loader.fadeOut(500);
            failed.fadeOut(500);
            success.delay(500).fadeIn(500);
          },
          error: function(xhr) { // if error occured
            loader.fadeOut(500);
            success.fadeOut(500);
            failed.delay(500).fadeIn(500);
          },
          complete: function() {
            loader.fadeOut(500);
          }
        });
      } else {
        loader.fadeOut(500);
        failed.delay(500).fadeIn(500);
        success.fadeOut(500);
      }
    
      return false;
    });

    注意:我没有自己编写此代码,因为它是由模板创建者提供的。我联系了模板创建者并面临绝对可怕的支持。这是我在这里发帖的主要原因。

1 个答案:

答案 0 :(得分:0)

在寻找更多研究和询问时,我发现this非常有用的答案,最终修复了我的本地XAMPP配置。所以代码本身没什么问题,但我的配置就是问题。

重要事项:尝试尽可能接近步骤,简单;缺失可以在最终结果中发挥重大作用。如果事情似乎被打破,请仔细检查每一步。

还发现另一个非常有见地和有趣的阅读post

相关问题