با سلام امروز در خدمت  شما هستیم و میخواهیم با Google reCaptcha  و نحوه استفاده اون در کد PHP آشنا بشین .گوگل جدیدا سرویس تشخیص اسپمر های خود یا همان Google reCaptcha قدیمی را بروز کرده است و دیگر از کدهای درهم و پیچ خورده و ناخوانا خبری نیست . فقط کافی است یک تیک بزنید و قضیه تمام است . در این آموزش می خواهیم بدانیم که چگونه می توانیم این سرویس جذاب گوگل را در برنامه خود استفاده کنیم .  

Google reCaptcha

 

ثبت وبسایت و دریافت Secret Code

اولین چیزی که نیاز دارید این است که سایت خود را در Google reCaptcha به ثبت برسانید .برای این کار به این آدرس مراجعه کنید.

به حساب جیمیل تان وارد شوید و سپس فرم زیر را تکمیل نمایید

استفاده آسان از Google reCaptcha

بعد از تکمیل و ارسال فرم بالا گوگل دو مورد مهم را برای شما نشان می دهد :

  • Site key

  • Secret key

قرار دادن reCaptcha در سایت شما

برای اینکه این سرویس در سایت شما فعال شود باید هم در سمت کاربر و هم در سمت سرور تغییراتی ایجاد کنید . در سمت کاربر فایل HTML را باز کرده و کد زیر را قبل از تگ پایانی <head> قرار دهید :

<script src='https://www.google.com/recaptcha/api.js'></script>

و برای اینکه ویجت سرویس مربوطه در داخل فرم نمایش یابد باید کد زیر را در فرم قرار دهید :

<div class="g-recaptcha" data-sitekey="== Your site Key =="></div>

هنگامی که فرم ارسال می شود یک مقدار با نام “g-recaptcha-response” به سمت سرور ارسال می گردد که می توانید از آن برای تشخیص اینکه کاربر تیک کپچا را زده است یا خیر استفاده کنید .

 

ایجاد یک فرم ارسال نظر با استفاده از reCaptcha

<html>
 <head> 
<title>Google recapcha demo - Codeforgeek</title> 
<script src='https://www.google.com/recaptcha/api.js'></script>
 </head> 
<body> 
<h1>Google reCAPTHA Demo</h1> <form id="comment_form" action="form.php" method="post"> 
<input type="email" placeholder="Type your email" size="40"><br><br>
 <textarea name="comment" rows="8" cols="39"></textarea><br><br>
 <input type="submit" name="submit"value="Post comment"><br><br> 
<div class="g-recaptcha" data-sitekey="=== Your site key ==="></div>
 </form> 
</body> 
</html>

در سمت سرویس دهنده از زبان PHP استفاده می کنیم و داده هایی را که توسط فرم ارسال شده اند و در داخل متغیر سراسری $_POST هستند را چک می کنیم


<?php

        $email;$comment;$captcha;
        if(isset($_POST['email'])){
          $email=$_POST['email'];
        }if(isset($_POST['comment'])){
          $email=$_POST['comment'];
        }if(isset($_POST['g-recaptcha-response'])){
          $captcha=$_POST['g-recaptcha-response'];
        }
        if(!$captcha){
          echo '<h2>Please check the the captcha form.</h2>';
          exit;
        }
        $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=YOUR SECRET KEY&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']);
        if($response.success==false)
        {
          echo '<h2>You are spammer ! Get the @$%K out</h2>';
        }else
        {
          echo '<h2>Thanks for posting comment.</h2>';
        }
?>

همانطور که می بینید در کد بالا اطلاعات مربوطه را به آدرس سرویس recaptcha ارسال می کنیم و اطلاعات دریافتی از گوگل را که به صورت json هستند چک می کنیم تا مطمئن شویم کاربر اسپمر نیست

 


        $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=YOUR SECRET KEY&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']);

 

امیدوارم از این آموزش استفاده کرده باشید.موفق باشید.