2016-08-22 105 views
0

我有一個小問題實施谷歌recaptchas我的PHP郵件程序。PHP郵件程序腳本不能與谷歌recaptcha

問題

所以這是我的問題,當我點擊提交我的聯繫表格。我得到了一個403錯誤,它被PHP中的最後一個人調用。這在上述代碼不起作用時被調用。所以這個問題是從PHP文件的開始到最後一個else語句之前的某個地方。我找不到任何問題。此外,即時通訊不是很流利的PHP。

這裏是我的HTML

HTML

<form id="ajax-contact" method="post" action="../../mailer.php"> 
    <h1>We Look Forward To Speaking With You!</h1> 
    <input id="name" name="name" placeholder="Name" required> 

    <input id="email" name="email" type="email" placeholder="Email" required> 

    <input id="tel" name="tel" type="tel" placeholder="Phone" required> 

    <input id="time" name="time" type="text" placeholder="Prefered Time: Morning, Noon, Afternoon, Evening"> 

    <input id="method" name="method" type="text" placeholder="Prefered Method of Contact: Phone, Email, Text, Other"> 

    <textarea id="message" name="message" placeholder="Send us a message!" required></textarea> 
    <div class="recaptcha-box"> 
     <div class="g-recaptcha" data-sitekey="6LdJgSUTAAAAAI6IJfPhaHh7aMWjVPsL4_B9OHGj"></div> 
    </div> 
    <input id="submit" name="submit" type="submit" value="Submit"> 

</form> 

這裏是我JS

JAVASCRIPT

function sendEmail() { 
    var form = $('#ajax-contact'); 
    var formMessages = $('#form-messages'); 
    var formData = $(form).serialize(); 


    $(form).submit(function(event) { 
     event.preventDefault(); 
    }); 

    $.ajax({ 
     type: 'POST', 
     url: $(form).attr('action'), 
     data: formData 
    }) 

    .done(function(response) { 
     $(formMessages).removeClass('error'); 
     $(formMessages).addClass('success'); 

     $(formMessages).text(response); 
     $('#name').val(''); 
     $('#email').val(''); 
     $('#tel').val(''); 
     $('#time').val(''); 
     $('#method').val(''); 
     $('#message').val(''); 
     location.assign("http://www.theppcgroup.com/thank-you.html"); 
    }) 

    .fail(function(data) { 
     $(formMessages).removeClass('success'); 
     $(formMessages).addClass('error'); 

     if (data.responseText !== '') { 
      $(formMessages).text(data.responseText); 
     } else { 
      $(formMessages).text('Oops! An error occured and your message could not be sent.'); 
     } 
    }); 
    } 

if ($('#submit').on('click', function() { 
    sendEmail(); 
})); 

這是我的PHP

PHP

<?php 

    if (isset($_POST['sumbit'])) { 
    $url = 'https://www.google.com/recaptcha/api/siteverify'; 
    $privatekey = 'Cant give you key, Sorry :)'; 

    $response = file_get_contents($url.'?secret='.$privatekey."$response=".$_POST['g-recaptcha-response']."&remoteip=".$_SERVER['REMOTE_ADDR']); 
    $data = json_decode($response); 

    if(isset($data->success) AND $data->success==true) { 

     // Get the form fields and remove whitespace. 
     $name = strip_tags(trim($_POST["name"])); 
     $phone = trim($_POST["tel"]); 
     $time = trim($_POST["time"]); 
     $method = trim($_POST["method"]); 
       $name = str_replace(array("\r","\n"),array(" "," "),$name); 
     $email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL); 
     $message = trim($_POST["message"]); 

     // Check that data was sent to the mailer. 
     if (empty($name) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) { 
      // Set a 400 (bad request) response code and exit. 
      http_response_code(400); 
      echo "Oops! There was a problem with your submission. Please complete the form and try again."; 
      exit; 
     } 

     // Set the recipient email address. 
     // FIXME: Update this to your desired email address. 
     $recipient = "[email protected]"; 

     // Set the email subject. 
     $subject = "New contact from $name"; 
     $msg = "Thank you for contacting ThePPCGroup.\nSomeone will contact you shortly. Please let us know the best time to reach you, and if phone or email is better.\nThePPCGroup\n855-539-4742\[email protected]\nWWW.ThePPCGroup.Com"; 
     $headers = 'From: [email protected]' . "\r\n" . 
      'Reply-To: [email protected]' . "\r\n" . 
      'X-Mailer: PHP/' . phpversion(); 
     // Build the email content. 
     $email_content = "Name: $name\n"; 
     $email_content .= "Email: $email\n\n"; 
     $email_content .= "Phone: $phone\n\n"; 
     $email_content .= "Prefered Time: $time\n\n"; 
     $email_content .= "Prefered Method: $method\n\n"; 
     $email_content .= "Message:\n$message\n"; 

     // Build the email headers. 
     $email_headers = "From: $name <$email>"; 

     // Send the email. 
     if (mail($recipient, $subject, $email_content, $email_headers)) { 
      // Set a 200 (okay) response code. 
      http_response_code(200); 
      mail($email, "Thank You!", $msg, $headers); 
     } 
     } 
     else { 
      // Set a 500 (internal server error) response code. 
      http_response_code(500); 
      echo "Oops! Something went wrong and we couldn't send your message."; 
     } 

    } else { 
     // Not a POST request, set a 403 (forbidden) response code. 
     http_response_code(403); 
     echo "There was a problem with your submission, please try again."; 
    } 
?> 
+0

在我看來一個$,而不是它被稱爲在需要時'如果(isset( $ _POST ['sumbit']))'conditional failures – Oli

+0

是的,有一個錯誤使得失敗。 @oli –

回答

0

由於拼寫錯誤而導致失敗。

變化

if (isset($_POST['sumbit'])) 

if (isset($_POST['submit'])) 
從這個

除了做檢查在javascript $('#form-messages'); ID名稱。與PHP id(textarea)不匹配。

希望能夠解決這個問題。

+0

沒有解決它,你是什麼意思一個錯過匹配? –

+0

in HTML您的textarea id名稱是id =「message」&in javascript $('#form-messages'); –

0

有一個錯字

$response = file_get_contents($url.'?secret='.$privatekey."$response=".$_POST['g-recaptcha-response']."&remoteip=".$_SERVER['REMOTE_ADDR']); 

$response = file_get_contents($url.'?secret='.$privatekey."&response=".$_POST['g-recaptcha-response']."&remoteip=".$_SERVER['REMOTE_ADDR']); 

有一個&