گوگل جدیدا سرویس تشخیص اسپمر های خود یا همان Google reCaptcha قدیمی را نونوار کرده است و دیگر از کدهای درهم و پیچ خورده و ناخوانا خبری نیست . فقط کافی است یک تیک بزنید و قضیه تمام است . در این پست می خواهیم به شما بگوییم که چگونه می توانید این سرویس جذاب گوگل را در برنامه خود استفاده کنید .
ثبت وبسایت و دریافت Secret Code
اولین چیزی که نیاز دارید این است که سایت خود را در 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']);
سلام خطای زیر چطور رفع میشه من دامین رو به صورت صحیح وارد کردم و سایت کی هم درست هستش اما ارور زیر میادش
خطا برای مالک سایت: نوع کلید معتبر نیست.
سلام
شاید نوع کلید با نوع کپچا همخوانی نداره. مثلا کلید برای ریکپچا قدیمی هست ولی کد استفاده شده برای نسخه جدید هست
سلام من از
https://www.google.com/recaptcha/api.js?hl=fa
در اسکریپت استفاده کردم ولی فارسی نشد
سلام. شاید یک کد دیگه هم هست که تداخل ایجاد میشه. تو یه صفحه دیگه این رو تست کنین اگه مشکل حل شد ایراد از کدهای شما بوده حتما
سلام. ممنون
سلام ، منظور از tour site key تو بخش data sticky چیه ؟
سلام دوست عزیز
site key کدی هست که بعد از ثبت نام در سایت google recaptcha دریافت می کنید و مخصوص سایت شماست
سلام راهی هست که قبل از ارسال فرم به گوگل تشخیص بدیم اصلن کاربر روی کپچا کلیک کرده تا دکمه ارسال برایش فعال بشه یا بهتر بگم تا قبل از زدن تیک اطلاعاتی به سرور ارسال نشه
سپاس
سلام؛
کد php سایت من برای فرم مربوطه به شکل زیر هست ؛
برای جایگزینی این کد با کد فعلی همه کارها رو بلدم ،
فقط نمیدونم این تکه کد اخر php رو کجای کد php خودم اضافه کنم !
کد php من:
if(isset($post[‘NB_FormC’]) AND $post[‘NB_FormC’] == 1 ){
if($_SESSION[‘my_captcha’] == $post[‘NB_Formcode’] AND isset($post[‘NB_Formcode’])){
$queryC = mysql_query(‘SELECT * FROM `config` WHERE `config_id` = “1” LIMIT 1’) or trigger_error(“Query Failed: ” . mysql_error());
$config = mysql_fetch_assoc($queryC);
$table .= ‘ فرم تماس با ما جدید با اطلاعات زیر در سایت ارسال شده است : ‘;
$table .= ‘عنوان : ‘.$post[‘NB_FormSUB’].”;
$table .= ‘نام : ‘.$post[‘NB_FormNAME’].”;
$table .= ‘ایمیل : ‘.$post[‘NB_FormMAIL’].”;
$table .= ‘همراه : ‘.$post[‘NB_FormTel’].”;
$table .= ‘پیغام : ‘.$post[‘NB_FormTXT’].”;
$Netbanan_Send = NetBanan_send_mail($config[config_admin_email],$post[‘NB_FormSUB’],$table);
if($Netbanan_Send) echo ‘alert(“اطلاعات شما با موفقیت برای ما ارسال شد. اگر پیام شما نیاز به پاسخ داشته باشد با شما در تماس خواهیم بود.”);’ ;
}else{
echo ‘alert(“کد امنیتی را اشتباه وارد کردید .”);’;
}
}
ممنون از لطف شما
سلام دوست من
در انتهای کدتون وقتی می خواین اطلاعات رو ذخیره کنین قبلش باید این کدها رو بزارین تا صحت کپچا هم بررسی بشه.
if(isset($_POST['g-recaptcha-response'])){
$captcha=$_POST['g-recaptcha-response'];
}
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&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']);
if($response.success==false)
{
echo '
You are spammer ! Get the @$%K out
';
}else
{
echo '
Thanks for posting comment.
';
}
سلام. میخواستم بدونم نسخه فارسیش چجوری قابل استفاده اس؟
سلام . از این آدرس استفاده کنید :
https://www.google.com/recaptcha/api.js?hl=fa
اونجایی که نوشتید «در سمت سرویس دهنده از زبان PHP استفاده می کنیم» اون کد php رو دقیقا در کدام فایل باید بذاریم.
مرسی
سلام
action فرم هر فایلی باشه باید داخل همون فایل قرار بدیم . مثلا اگه اکشن فرم اینطوری هست :
action="form.php"
باید داخل فایلform.php
قرار بدیدهر فایلی که اطلاعات فرم به اون فایل ارسال میشه .
سلام یه سوالی دارم
چه طور میتونم با استفاده از php و mysql یه همچین سیستم کامنت گذاری رو درست کنم
کد هارو قرار دادم ولی چنتا مشکل دارم
1) صفحه اول سایت من شده همون فرم کپتچا http://www.aryabux.ir
2) میخوام کد تو صفحه ثبت نام و ورود کاربران نمایش داده بشه چیکار کنم؟
3) تو سایت گوگل کپتچا مرحه دومی هم هست (server side integration)
و شما فقط تا مرحله اول گفتید
سلام
من نمیتونم توی اسکریپتم کد هارو قرار بدم اماکن داره اطلاعات رو برای شما بفرستم
برام درست کنید؟
ممنون
خط سوم چکار کرده ؟ متوجه این قسمت نشدم
$email;$comment;$captcha;
این سه متغیر رو یکجا با هم تعریف کرده
و برای اینکه ویجت سرویس مربوطه در داخل فرم نمایش یابد باید کد زیر را در فرم قرار دهید :
برای فرم ورود به وردپرس این کد رو کجا قرار بدیم؟
می تونید از این پلاگین به سادگی استفاده کنید
Login No Captcha reCAPTCHA
خدا خیرت بده این افزونه از همه راهها ساده تره. از صبح درگیر کپچا و فرمای مختلفش بودم همش نصب میکردم یا نشون نمیداد یا ارور میداد. این افزونه خیلی کارو راحت کرد
سلام ممنون از راهنمایی و آموزشه خوبتون ولی من نمیدونم html کجاست و از کجا باید دستکاریش کنم
برای اینکه این سرویس در سایت شما فعال شود باید هم در سمت کاربر و هم در سمت سرور تغییراتی ایجاد کنید . در سمت کاربر فایل HTML را باز کرده و کد زیر را قبل از تگ پایانی قرار دهید :
اینو به من یاد بدین خیلی ساده صحبت کنید.
سایت من وردپرسی هست و همش php داره من head رو نمیدونم از کجا پیدا کنم اصلا html رواز کجای ورد پرس میشه پیدا کرد؟
ممنون از زحماتتون
سلام
داخل پوشه قالب فعال وردپرس بشید . یک فایل با نام header.php هست که می تونید کدهای html رو داخلش ببینید
تشکر می کنم بسیار قابل فهم بود
سلام ، چرا من در خط 15 فرم خطا دریافت میکنم !!!!!
Warning: file_get_contents(https://www.google.com/recaptcha/api/siteverify?secret=YOUR SECRET KEY&response=03AHJ_Vuv1aUu2xUAWKeBfHkHhLi8d-xmxTGMzfivlZ9Ggtx-NhRpQDCpMui6aQ05Jmp3BxowEPhNVGjWcp1lADdJ2yitf8OiTMzU5JJ8wgYP26NsVKC7kZnZ1clTMfNaDyZUzvvU-Oz1sGKRNflr8CZHdzwS2ShuscYpfg4KzJBenfcL5l0wIqV6-PWkdwhA6ZSZDqSkydQl5DUrtWLzkb0qe4KxKP90XAJYJNxYnZJDLtr__c9PXozbmSHhuGVniqmpG9MNtgeR0AcGo-3CE2-evwH4r78h2ljwndxHMheS6HbB9Znn95UH-9GK1viAZkOQ5mSWbORGwOGnSoVs3TMF1iHrKL2FWe0sYRqsv8BeXBbMvMUfXEDP2R8-fQOMUTG8QQYydr5aOw2QL4vVWZEbjheMyxOvB1d2Ka0eSea4Q6InQ5D6VMYHeZaSfLXawRBqq-CkolHEnxxdq_w5xwipDdgA82UWz-Hn1DGLFzzGEcxK7afsjrcf14fiTEeCu5VOue6fD7lLgAnHzAazVYwLhVvbyCdDvWQixHXUY8SvfD1kQlSeqQLYbAeDJYfY7coMq5OFuvnvlfNxl-SnoaSPrE4w980GrQ9KbwjdZDVyWQ8SUwus8u12qrKxa_fYWsicKXADWfhR-4hz1-hdkW9rFJ9GusWdiNVzxiDg1vnIuguubRmxglclIdcztT-iIjbKMe1NUzAX_&remoteip=::1): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request in C:\xampp\htdocs\test\form.php on line 14
Notice: Use of undefined constant success – assumed ‘success’ in C:\xampp\htdocs\test\form.php on line 15
Thanks for posting comment..
اینم کامنتی که دریافت میکنم .
سلام
به جای YOUR SECRET KEY باید کلید خصوصی که از گوگل می گیرین رو بزارین