2015-04-09 17 views
5

PHP sorunu çözüldü.reCAPTCHA v2 benim PHP dosyasına ekleme

contact_form.html:

<html> 
<head> 
    <title>My Contact Form</title> 
    <script src='https://www.google.com/recaptcha/api.js'></script> 
</head> 
<body> 
    <div class="contact-form"> 
     <h3>Send me your message</h3> 
     <form action="app/contact.php" method="POST"> 
      <div class="text-fields"> 
       <span>Full Name *:</span> 
       <input name="full_name" type="text" class="text" value="Your Name"> 
      </div> 
      <div class="text-fields"> 
       <span>E-mail *:</span> 
       <input name="email" type="text" class="text" value="[email protected]"> 
      </div> 
      <div class="clearfix"> </div> 
      </div> 
       <div class="subject-field"> 
       <span>Subject *:</span> 
       <input name="subject" type="text" class="text" value="Your Subject"> 
      </div> 
      <div class="message-field"> 
       <span>Message *:</span> 
       <textarea name="message"> </textarea> 
      </div> 
      <div class="g-recaptcha" data-sitekey="SITE-KEY-HERE"></div> 
      <input type="submit" value="Send" /> 
     </form> 
    </div> 
</body> 
</html> 

Bu güncellenmiş PHP İşte kullanıyorum HTML ve PHP kodları. Bununla, ben de "Gönderen Adı" olan istediğim gibi From alanımı alıyorum.

contact_form.php: Yardım için

<?php 
    $full_name;$email;$subject;$message;$captcha; 
     if(isset($_POST['full_name'])){ 
      $full_name=$_POST['full_name']; 
     }if(isset($_POST['email'])){ 
      $email=$_POST['email']; 
     }if(isset($_POST['subject'])){ 
      $subject=$_POST['subject']; 
     }if(isset($_POST['message'])){ 
      $message=$_POST['message']; 
     }if(isset($_POST['g-recaptcha-response'])){ 
      $captcha=$_POST['g-recaptcha-response']; 
     } 
     if(!$captcha){ 
      echo 'Check the reCAPTCHA box.'; 
      exit; 
     } 
     $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=SECRET-KEY-HERE&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']); 
     if($response.success==false) 
     { 
      echo 'You are a robot!'; 
     }else 
     { 
      $to = "[email protected]"; 
      $from = $full_name . ' <'.$email.'>'; 
      $headers = 'From: ' . $from . "\r\n"; 
      mail ($to, $subject, $message, $headers); 

     echo 'Your message has been sent!'; 
     } 
?> 

teşekkürler herkese.

+0

belgelere bakın: https://github.com/google/recaptcha#usage – Halcyon

cevap

-1

bunu deneyin!

<?php 
    if(isset($_POST['full_name']) && isset($_POST['full_name'])){ 
     $full_name = $_POST['full_name']; 
     $email = $_POST['email']; 
     $from_name_email = $full_name . '<'.$email.'>'; 
    } 
    if(isset($_POST['subject'])){ 
     $subject = $_POST['subject']; 
    } 
    if(isset($_POST['message'])){ 
     $message = $_POST['message']; 
    } 
    }if(isset($_POST['g-recaptcha-response'])){ 
     $captcha=$_POST['g-recaptcha-response']; 
     $to = "[email protected]"; 
     $subject = "Contact Form"; 
     $headers .= 'From: ' . $from_name_email . "\r\n"; 
    } 
    if(!$captcha){ 
     echo 'Please check the the captcha form.'; 
     exit; 
    } 
    $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=YOUR SECRET KEY GOES HERE&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']); 
      if($response.success==false) 
      { 
       echo 'You are spammer!'; 
      }else 
      { 
     mail ($to, $subject, $message, $headers); 

     echo "Your message has been sent! Thank you."; 
      } 
    ?> 
+0

Bu kod hala saçma parçası '$ response.success == FALSE içerir. Bu anlamlı bir şey yok. – duskwuff

+0

Eğer captha işe yaramıyorsa spammer diyorsun ?? – Charly

+0

Hayır, aslında olmaz. "$ response.success", "başarı" dizesini "$ response" olarak ekler; Bu operasyonun sonucu asla yanlış olmayacaktır. – duskwuff