استفاده از Google reCAPTCHA نسخه 2 در PHP

shape
shape
shape
shape
shape
shape
shape
shape
استفاده از Google reCAPTCHA نسخه 2 در PHP

استفاده از Google reCAPTCHA نسخه 2 در PHP

اگر دارای سایت هستید و در سایت خود از فرم های مثل نظرسنجی، عوضیت در خبرنامه، تماس با ما و ... استفاده می کنید برای جلوگیری از ارسال مطالب جعلی توسط ربات ها این مقاله را حتما مطالعه کنید. د راین مقاله با نحوه پیاده سازی Google reCaptcha نسخه 2 ( i'm not a robot) آشنا خواهید شد.

شرکت طراحی سایت، اپلیکیشن و سئو بهنیا

اگر دارای یک سایت هستید و در سایت خود فرم هایی جهت ارتباط با کاربران خود دارید، حتما برای شما پیش آمده است که این فرم ها با اطلاعات جعلی و بعضا عجیب و غریب پر می شوند. اما چه کسانی این اطلاعات رو پر میکنند؟ عموما دو دلیل اصلی برای به وجود امدن چنین حالتی وجود دارد. یک دلیل تبلیغات است و دلیل دیگری حمله به سایت ما است. هر یک از این دلیل ها که باشد به سایت شما و یا سیستم مدیریت یشما ضربه میزند.

راه جلوگیری از دریافت نظرات جعلی و پیام های اسپم

برای پیدا کردن راه حل ابتدا باید دلیل و نحوه کار اون رو پیدا کنیم. عملیات ارسال نظرات جعلی و یا پیام های اسپم توسط ربات ها صورت می یگرد. به همین دلیل است که تعداد این پیام ها زیاد است. شما به عنوان مدیر یا برنامه نویس سایت باید بتوانید جلوی اسپم ربات ها رو بگیرید تا از بالا رفتن حجم پیام ها و نظرات نا مرتبط در سایت خود جلوگیری کنید. یکی از راه های اساسی شناسایی ربات ها استفاده از CAPTCHA است. به این صورت که یک متن به صورت تصویری نمایش داده می شود و کاربر باید آن متن را وارد کند. اما شرکت گوگل با ارائه reCAPTCHA این عملیات را ساده، امن تر و دقیق تر کرده است.

با استفاده از reCAPTCHA گوگل کاربران فقط با یک کلیک می توانند تایید کنند که ربات نیستند.

ریکپچا (reCAPTCHA) چیست؟

CAPTCHA مخفف عبارت Completely Automated Public Turing Test to Tell Computers and Humans Apart (آزمون عمومی کاملا خودکار تورینگ برای تشخیص انسان از ربات) است. ابزاری امنیتی برای جلوگیری از حملات و اسپم‌هایی که توسط ربات‌ها به سوی وب سایت ارسال می‌شوند. لایه‌های امنیتی که در قالب سوال در این ابزار وجود دارد، فقط توسط انسان قابل حل هستند. reCaptcha نیز یک سرویس آماده و رایگان است که توسط گوگل طراحی شده است.

 

انواع (نسخه های) reCAPTCHA گوگل

معروف ترین و مورد استفاده ترین نسخه های reCAPTCHA گوگل نسخه 2 و 3 آن است. درنسخه 2 نیاز است تا کاربر تیک گزینه من یک ربات نیستم (i'm not a robot) را بزند تا به عنوان ربات شناسای نشود.

google reCAPTCHA v2

اما گوگل در نسخه 3 این عملیات را ساده تر کرده است. در reCAPTCHA V3 از یک حالت نا پیدا و تقریبا مخفی استفاده شده است که تنها در موارد مشکوک کاربر نیاز به انجام عملیات احراز هویت خود می باشد.

google reCAPTCHA V3

در ادامه این مقاله به نحوه پیاده سازی reCAPTCHA V2 در PHP می پردازیم.

برای پیاده سازی نسخه 3 مقاله زیر را مطالعه کنید

استفاده از Google reCAPTCHA نسخه ۳ در PHP

 

نحوه پیاده سازی reCAPTCHA v2 با PHP

reCAPTCHA v2

1- برای پیاده سازی Google reCaptcha نیاز به کلید و رمز دارید که گوگل آن را در اختیار شما قرار می دهد. این کلید رو برای دامنه مورد نظرتون دریافت می کنید. برای همین منظور وارد پنل ادمین reCaptcha شوید.

برای ورود به پنل ادمین reCaptcha کلیک کنید.

2- پس از ورود به لینک زیر از شما درخواست میشه که با یک حساب جیمیل خود وارد شوید.

3- در صفحه جدید از شما اطلاعات مربوط به دامنه را درخواست می کند.

نحوه پیاده سازی reCAPTCHA v2 با PHP

  • label : در این قسمت یک عنوان برای reCaptcha خود بنویسید.
  • reCaptcha type : در این قسمت نوع و یا نسخه reCaptcha را انتخاب کنید. ( در این آموزش گزینه reCaptcha v2 را انتخاب می کنیم)
  • Domains : در این قسمت نام دامنه هایی که قصد استفاده از reCaptcha رو اون دارید وارد کنید. ( برای اینکه بتونید در پروژه های روی سیستم خودتون هم تست کنید localhost را نیز اضافه کنید)

 

پس از انتخاب reCaptcha v2 ممکن است چند گزینه نمایش داده شود.

در نهایت مشابه تصویر زیر خواهیم داشت.

نحوه پیاده سازی reCAPTCHA v2 با PHP

4- در پایان کار تیک گزینه Accept the reCAPTCHA Terms of Service را فعال کرده و دکمه Submit را انتخاب می کنیم.

 

نحوه پیاده سازی reCAPTCHA v2 با PHP

5- اکنون گوگل کلید و رمز مربوط به سایت شما رو تولید کرده و در اختیار شما قرار می دهد.

 

نحوه پیاده سازی reCAPTCHA v2 با PHP

6- اکنون تمام اطلاعات لازم رو جهت پیاده سازی reCaptcha V2 در اختیار داریم و می توانیم با استفاه از کدهای PHP آن را پیاده سازی کنیم.

نکته: در صورتی که کلید و رمز رو فراموش کردید یا به هر دلیلی از دست دادید. مجددا میتونید وارد پنل شوید و اطلاعات لازم رو به دست آورید یا حذف کنید.

نحوه پیاده سازی reCAPTCHA v2 با PHP

 

پیاده سازی reCaptcha V2 با کدهای PHP

اکنون نوبت پیاده سازی reCaptcha با کد نویسی است. برای پیاده سازی نیاز به دو صفحه داریم. یک صفحه مربوط به فرمی است که کاربر باید پر نماید و صفحه دیگر مسئول چک کردن reCaptcha و ثبت اطلاعات می باشد. دراینجا reCaptcha را با مثال فرم اشتراک در خبرنامه پیاده سازی میکنیم.

<script src="https://www.google.com/recaptcha/api.js" async defer></script>

با استفاده از قطعه کد بالا کتابخانه جاوا اسکریپت reCAPTCHA را به صفحه مورد نظر اضافه میکنیم. ( در بین تگ Head نوشته شود).

حالا باید قطعه کد زیر رو درون فرم، هرجایی که می خواهید reCAptcha نمایش داده شود قرار دهید.

<div class="g-recaptcha" data-sitekey="6Lfi6oMcAAAAADxidvhxWfspCInksED55j5kEcuU"></div>

به جای رشته 6Lfi6oMcAAAAADxidvhxWfspCInksED55j5kEcuU ، مقدار site key مربوط به سایت خودتون رو قرار دهید. ( در مرحله 5 بالاتر توضیح داده شده است)

کد کامل صفحه تا اینجای کار به این صورت می شود.

<html>
  <head>
    <title>Subscribe to Newsletter</title>
 
    <script src="https://www.google.com/recaptcha/api.js" async defer></script>
  </head>
  <body>
    <div>
      <b>Subscribe Newsletter</b>
    </div>
 
    <form action="subscribe_newsletter_submit.php" method="post">
      <div>
          <div>
              <input type="email" id="email" name="email">
          </div>
          <div>
              <div class="g-recaptcha" data-sitekey="6Lfi6oMcAAAAADxidvhxWfspCInksED55j5kEcuU"></div>
          </div>
          <div>
              <input type="submit" value="submit">
          </div>
      </div>
    </form>

  </body>
</html>

 

اکنون فرم تکمیل شد و reCaptcha نمایش داده می شود. حال باید پس از زدن دکمه ارسال، اطلاعات را به صفحه دیگر جهت بررسی وضعیت کاربر ارسال کنیم. ( در مثال بالا به صفحه subscribe_newsletter_submit.php )

کد PHP جهت چک کردن وضعیت کلیک کردن گزینه من ربات نیستم و تشخیض ربات بودن یا انسان بودن برای صفحه subscribe_newsletter_submit.php :

<?php
define("RECAPTCHA_V2_SECRET_KEY", 'YOUR_SECRET_HERE');

if (isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])) {
    //your site secret key
    $secret = RECAPTCHA_V2_SECRET_KEY;
    //get verify response data
    $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=' . $secret . '&response=' . $_POST['g-recaptcha-response']);
    $responseData = json_decode($verifyResponse);

    // verify the response
    if ($responseData->success) {
        // valid submission
        // go ahead and do necessary stuff
    } else {
        // spam submission
        // show error message
    }
} else {
    // spam submission
    // show error message
}

دراینجا نیاز است تا اطلاعات ارسال شده همراه ا فرم را در سرور گوگل چک کنیم. به همین منظور توکن و مقدار secret key ( پیش تر در مرحله 5 توضیح داده شد)  را به آدرس https://www.google.com/recaptcha/api/siteverify ارسال می کنیم و نتیجه دریافتی را چک می کنیم.

توجه : به جای مقدار YOUR_SECRET_HERE مقدار secret key دریافتی در پنل ادمین reCaptcha را وارد کنید.

در نهایت نتیجه به صورت یک شی JSON دریافت می شود که درون متغیر $responseData قرار می دهیم. در صورتی که مقدار $responseData->success برابر با true بود کاربر انسان است و میتوانید عملیات مربوط به ثبت اطلاعات در خبرنامه را انجام دهید. ( در قسمت valid submission )

در صورتی که کاربر ربات نباشد دستورات درون if و در غیر این صورت دستورات else اجرا خواهد شد.

 

اگر سوال یا مشکلی در این زمینه داشتید در زیر همین پست مشکل یا سوالتون رومطرح کنید.

آدرس ایمیل شما منتشر نخواهد شد. موارد ستاره دار الزامی است. *