آموزش ساخت تصویر امنیتی گوگل درPHP

1396/11/23 علیرضا حاتمی نیا 305

با سلام خدمت شما کاربر محترم وبسایت ilikephp. امروز با آموزش ویژه دیگری در خدمت شما هستیم. قصد داریم در این آموزش شما را با نحوه ساخت تصویر امنیتی گوگل یا ریکپجا در php آشنا کنیم.

تصویر امنیتی گوگل یا ریکپچا

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

google recaptcha usiing by php tutorial

پیش نیازها

قبل از شروع آموزش استفاده از تصویر امنیتی گوگل لازم است تا با مفاهیم زیر تا حدودی آشنایی لازم را داشته باشید.

نحوه درج تصویر امنیتی گوگل در HTML

تصویر امنیتی گوگل یا ریکپچا به این صورت است که مربعی را جهت کلیک به کاربر نمایش می دهد. کاربر پس از شناسایی مربع، روی آن کلیک کرده و از این رو مشخص می شود که کاربر قادر به  شناسایی مربع یک انسان است و نه یک ربات. سپس اطلاعات مورد نیاز توسط یک لینک به گوگل ارسال شده و پس از پاسخ True از سوی گوگل می توانید متوجه شوید که تصویر امنیتی با موفقیت کلیک شده است. 
برای شروع ابتدا بایستی به لینک www.google.com/recaptcha رفته و سپس روی گزینه GetreCAPTCHA در بالا و سمت راست صفحه کلیک کنید تا وارد صفحه مدیریت ریکپچا شوید. البته لازم به ذکر است که حتما بایستی با اکانت گوگل خود وارد شده باشید.

 

google-get-recaptcha

پس از ورود به صفحه مدیریت recaptcha در قسمت Label در Register a new site یک نام برای تصویر امنیتی خود انتخاب کنید و گزینه reCAPTCHA v2 را انتخاب نمایید. سپس نام دامنه یا دامنه های خود را در قسمت Domains وارد نمایید. پس از آن تیک گزینه Accept the reCAPTCHA Terms of Service را جهت توافق با خدمات ریکپچا را بزنید و در نهایت روی دکمه register کلیک نمایید.
 register new site google recaptcha
در صفحه بعدی کتابخانه ای که گوگل ارائه داده است را در قسمت <head> در صفحه فرم خود اضافه میکنیم و همچنین قطعه کدی که جهت نمایش تصویر امنیتی ارائه کرده است را در زیر فرم خود اضافه می کنیم.
 client side integration google recaptcha
در قسمت server side integration سه پارامتر secret,response,remoteip را همراه با لینکی که نمایش داده است ارسال می کنیم تا پاسخ آن در قالب یک فایل json به سمت شما ارسال شود.
 google recaptcha server side integration
مقدار پارامتر secret که تعیین شده است. مقدار پارامتر secret نیز توسط $_POST دریافت و ارسال می شود و مقدار پارامتر اختیاری remoteip نیز توسط $_SERVER['REMOTE_ADDR'] تعیین می گردد.
کدهای HTML

<form action="" method="post">
    <input type="text" name="username" placeholder="username"><br>
    <input type="submit" name="submit" value="send">
    <div class="g-recaptcha" data-sitekey="6LdsrkUUAAAAAADkZiKZtamGGnc-zp5M4xppf8iA"></div>
</form>

کدهای PHP

if(isset($_POST['submit'])) {
    $username = $_POST['username']
    $secret_key = "6LdsrkUUAAAAAIBpE7hcCupl0vZ4QkMufqwF52nl";
    $response_key = $_POST["g-recaptcha-response"];
   $user_ip = $_SERVER['REMOTE_ADDR'];
   $url = "https://www.google.com/recaptcha/api/siteverify?secret=$secret_key&response=$response_key&remoreip=$user_ip";
   $url = file_get_contents($url);
   $url = json_decode($url);
   if($url -> success) {
       echo "verification success";
   }else {
       echo "verification Failed";
   }
}

در کدهای بالا دقت داشته باشید پس از ارسال لینک پاسخی به صورت فایل json ارسال می شود. به همین دلیل از تابع file_get_contents برای خواندن آن فایل استفاده شده است. این تابع محتویات یک فایل را به صورت رشته بر می گردانند و چون محتویان فایل ارسال شده از سمت گوگل به صورت json است، از تابع json_decode برای دسترسی به مقدارهای آن استفاده شده است.