• آموزش استفاده از recaptcha گوگل برای فرم تماس با ما

    آموزش پارتیشن بندی با Partition Magic-hero-recaptcha-demo-jpg


    برای استفاده از سیستم ضد ربات گوگل باید curl روی هاست شما فعال باشه .

    اول از اینجا وارد بخش ری کپچای گوگل شده و کلیدهای عمومی و خصوصی خود رو دریافت کنید .

    کلید عمومی به نام Site key و کلید خصوصی هم Secret key هستش .

    برای نمایش ری کپچا در فرم باید 2 کد به قالب اضافه کنیم :

    کد اول که یک کد جاوا اسکریپت هستش و اینو بین تگ هد فایل اچ تی ام ال خودمون قرار میدیم :

    HTML Code:
    <script type="text/javascript" src="https://www.google.com/recaptcha/api.js"></script>
    جالبه بدونید که گوگل ری کپچا 40 زبان زنده دنیا رو پشتیبانی میکنه و جالبتر از اون اینه که زبان فارسی رو هم تو لیست خودش داره . کد بالا بصورت پیشفرض روی زبان انگلیسی تنظیم شده و برای استفاده از زبان فارسی ما باید ?hl=fa رو به انتهای کدمون اضافه کنیم که بصورت زیر میشه :

    HTML Code:
    <script type="text/javascript" src="https://www.google.com/recaptcha/api.js?hl=fa"></script>
    کد دوم که یه کد div هستش رو قبل از دکمه Submit قرار میدیم :

    HTML Code:
    <div class="g-recaptcha" data-sitekey="Add Your Site key here"></div> <br/>
    این کد نیازمند کلید عمومی یا همون Site key هستش که قبلا از گوگل دریافت کردیم .

    خب با اضافه کردن این کدها سیستم ضد ربات برای ما نمایش داده خواهد شد . از اینجا به بعد شروع به کد نویسی برای احراز هویت میکنیم . ما از زبان پی اچ پی برای اینکار استفاده میکنیم . فرض ما بر اینه که بقیه کدها آماده هستش و فقط قراره ما سیستم ضد ربات رو به سیستم اضافه کنیم .

    اول چک میکنیم ببینیم که آیا کاربر چک باکس کپچا رو تیک زده یا نه :

    PHP Code:
    if ( isset($_POST['g-recaptcha-response'])) { 

               
    $captcha =$_POST['g-recaptcha-response']; 

    PHP Code:
    if (empty($captcha)) {  

      
    $Err_captcha ='لطفا سیستم ضد رباط را نادیده نگیرید';


    خب تا اینجا همه چی درسته حالا با استفاده از کلید خصوصی ( Secret key) از گوگل میخوایم که چک کنه ببینه کاربر ما واقعی هستش یا رباته :

    PHP Code:
    $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=Add you secret key here&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']);

       
    $responseKeys json_decode($response,true);

    if(
    intval($responseKeys["success"]) !== 1) {  

       die(
    'سیستم ضد رباط شما را اسپمر شناخته است !');  

            } else {     

         echo  
    "کاربر عزیز ، کامنت شما با موفقیت ارسال شد <br/>"

            echo 
    "با تشکر"
     
          } 
    کار تموم شده برای درک بهتر من یک نمونه کد کامل رو برای شما در این پست قرار میدم :

    PHP Code:
    <?PHP

    $site_key 
    ="Add your site key here";

    $secret "Add your secret key here";

    $ip $_SERVER['REMOTE_ADDR'];

    if (isset(
    $_POST['name']) && isset($_POST['text']) && isset($_POST['g-recaptcha-response'])) { 
       
    $name $_POST['name'];

     
    $text $_POST['text'];    

    $captcha =$_POST['g-recaptcha-response'];

    if (empty(
    $name)) {    

    $Err_name 'این یک فیلد الزامی است';

    }elseif (empty(
    $text)) {

        
    $Err_text 'این یک فیلد الزامی است';

    }elseif (empty(
    $captcha)) { 

       
    $Err_captcha ='لطفا سیستم ضد رباط را نادیده نگیرید';

    }else{ 

    $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secret."&response=".$captcha."&remoteip=".$ip);

        
    $responseKeys json_decode($response,true);

    if(
    intval($responseKeys["success"]) !== 1) { 

        die(
    'سیستم ضد رباط شما را اسپمر شناخته است !'); 

             } else {  

            echo 
    $name ." عزیز ، کامنت شما با موفقیت ارسال شد <br/>";

            echo 
    "با تشکر"

           }

    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html>

    <head>

    <title>فرم تماس</title>

    <script type="text/javascript" src="https://www.google.com/recaptcha/api.js?hl=fa"></script>

    <style type="text/css">
    span {    color: red;
    }
    </style>

    </head >

    <body dir="rtl">

    <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST"> 

       نام : <br/>

        <input type="text" name="name"><span>&nbsp<?php echo $Err_name ?> </span><br/><br/>

        کامنت : <br/> 

       <textarea name="text" cols="40" rows="4"></textarea><span>&nbsp<?php echo $Err_text ?> </span><br/>

    <span>&nbsp<?php echo $Err_captcha ?> </span><br/>

       <div class="g-recaptcha" data-sitekey="<?php echo $site_key ?>"></div> <br/>

       <input type="submit" value="ارسال">

    </form>
    </body>
    </html>