2016-05-03 11 views
0

StackOverflowに私の質問によく似たものがたくさんあることがわかりましたが、まだ私の質問に対する正しい解決策を見つけることができなかったと思います。PHPの連絡先フォームの設定上の問題

のメール機能を受け取ると接続されているものを私が午前問題 - ユーザーがhtmlベースのフォームに記入し、send messageを押すことができ、ウェブサイトの基本的ご連絡セクションを、このメッセージは、私のメールに配信されます。

私は自分の開発をXAMPPで行い、ApacheサーバーとMercuryをlocalhostで実行しています。検証は成功を示しますが、電子メールは通過しません。

  1. 私は、HTMLのセクションにmethod="post"を追加しようとしましたが、type: "POST"がすでに含まれていることを見出しました。
  2. Mercuryが使用するポートをダブルチェックし、php.iniに記載されているポートと比較すると、両方とも25に設定されます。
  3. また、Bitbucket pagesに展開しようとしましたが、Azureはlocalhostからlive hostingに移行しました。

私はこの非常に詳細なpostを慎重に読んだ。ウェブサイトをライブホスティングにアップロードするというアイデアは、この投稿から来たものです。

<?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 = "[email protected]"; 
    $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; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<form id="contact-form-1" action="sendmail.php" method="POST"> 
 
    
 
    <input class="contact-name form-control" type="text" name="name" placeholder="FULL NAME"> 
 
    <input class="contact-email form-control" type="text" name="email" placeholder="EMAIL"> 
 
    <textarea class="contact-message form-control" name="message" placeholder="MESSAGE" rows="5"></textarea> 
 
    <button class="btn">SEND MESSAGE</button> 
 

 
</form>

注:それは、テンプレートの作成者によって提供されたとして、私は自分でこのコードを書いていません。私はテンプレートの作成者に連絡し、絶対にひどいサポートに直面しました。これが私のポストの主な理由です。

+0

メールが正常に送信されたかどうかはチェックしていません。 – Epodax

+0

@Epodax検証を追加しました。更新された投稿をチェックしてください。 – alljamin

+0

エラーメッセージがありますか? – D14n4

答えて

0

詳細な調査をして尋ねると、私はthisという非常に有用な答えを見つけました。最終的に私のローカルXAMPPの設定を修正しました。だからコード自体には何も問題はなかったが、私の設定が問題だった。

重要:最後に結果に大きな違いがある場合は、できるだけ近い手順を実行してください。簡単な;があります。何かが壊れているように見えるので、すべてのステップをダブルチェックしてください。

また、他の非常に洞察力があり、面白く読むのはpostです。

関連する問題