با استفاده از reCAPTCHA گوگل می توانید کاربران واقعی را از ربات ها تشخیص بدید . کاربران فقط با یک کلیک می توانند تایید کنند که ربات نیستند.
پس ، reCAPTCHA سایت شما را از هرزنامه ها و spam حفاظت می کند آن هم با یک تجربه کاربری بهتر (UX) ! .شما به راحتی میتوانید از reCAPTCHA گوگل در پروژه ها و اسکریپت PHP خود استفاده کنید.
ما یک فرم تماس با ما ، با استفاده از reCAPTCHA گوگل در php ساختیم . قبل از شروع کار باید یک سری کار های اولیه از قبیل تایید دامنه و گرفتن API Key انجام بدید که بسیار آسان است و در زیر توضیح دادیم .
دریافت reCAPTCAH API key :
برای استفاده از reCAPTCHA گوگل در php ، نیاز است که سایت خودتان را ثبت و API Key را دریافت کنید
سایت خود را از طریق این لینک در گوگل ثبت کنید – https://www.google.com/recaptcha/admin
دریافت کلید عمومی سایت :
کلید مخصوص سایت شما در این قسمت نشان داده می شود.
دریافت کلید مخفی (Google Secret Key) :
کد HTML :
قبل از هر کاری باید کتابخانه جاواسکریپت reCAPTCHA API را فراخوانی کنید .
1 |
<script src="https://www.google.com/recaptcha/api.js" async defer></script> |
قبل از دکمه submit یک تگ div برای قرار دادن reCAPTCHA گوگل ایجاد کردیم . مقدار مشخصه data-sitekey را با site key (کلید عمومی) خود تغییر بدید.
1 2 3 4 5 6 7 |
<form action="" method="POST"> <input type="text" name="name" value="" /> <input type="text" name="email" value="" /> <textarea type="text" name="message"></textarea> <div class="g-recaptcha" data-sitekey="9LDDpf0eVtMZY6kdJnGhsYYY-5ksd-W"></div> <input type="submit" name="submit" value="SUBMIT"> </form> |
کد PHP :
در کد php زیر نیاز است که Google Secret Key را تغییر بدید
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
<?php if(isset($_POST['submit']) && !empty($_POST['submit'])): if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])): //your site secret key $secret = '9LuDh9kyetYYYYdT0jsVckScsH8Ks3KA'; //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); if($responseData->success): //contact form submission code $name = !empty($_POST['name'])?$_POST['name']:''; $email = !empty($_POST['email'])?$_POST['email']:''; $message = !empty($_POST['message'])?$_POST['message']:''; $to = 'contact@codexworld.com'; $subject = 'New contact form have been submitted'; $htmlContent = " <h1>Contact request details</h1> <p><b>Name: </b>".$name."</p> <p><b>Email: </b>".$email."</p> <p><b>Message: </b>".$message."</p> "; // Always set content-type when sending HTML email $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; // More headers $headers .= 'From:'.$name.' <'.$email.'>' . "\r\n"; //send email @mail($to,$subject,$htmlContent,$headers); $succMsg = 'Your contact request have submitted successfully.'; else: $errMsg = 'Robot verification failed, please try again.'; endif; else: $errMsg = 'Please click on the reCAPTCHA box.'; endif; else: $errMsg = ''; $succMsg = ''; endif; ?> |
قبلا در مورد ساخت کپجا اختصاصی مقاله ای نوشتیم که خواندن آن هم خالی از لطف نیست .
موفق و پیروز باشید.
سلام، ممنون از آموزش مفیدتون.
برای من خطای ERROR for site owner: Invalid key type میده.
ممنون میشم راهنمایی بفرمایید.
سلام ممنون
مطمینا کلید ها رو جابجا زدید
مچکرم.
چطوریی میتونم فارسیش کنم؟ اون متنی که نوشته من ربات نیستم..
و آیا میشه باکسشو وسطچین کرد!؟
سپاس فراوان از شما و سایت بسیار مفیدتون
با این روش میشه زبان رو تغییر داد
https://jsfiddle.net/7umzsmus/4
بله باکس رو که شما داخل div میزارید و بعد به اون div اصلی که کانتینر هست استایل میدید که وسط چین بشه
بسیار ممنونم.
سلام
من اینو استفاده کردم اما همش توی مرورگر کروم این متن میاد
recaptcha__en.js:120 [Violation] Added non-passive event listener to a scroll-blocking ‘touchstart’ event. Consider marking event handler as ‘passive’ to make the page more responsive. See https://www.chromestatus.com/feature/5745543795965952
(anonymous) @ recaptcha__en.js:120
(anonymous) @ recaptcha__en.js:36
(anonymous) @ recaptcha__en.js:36
(anonymous) @ recaptcha__en.js:28
OY @ recaptcha__en.js:416
It.I @ recaptcha__en.js:523
FI.I @ recaptcha__en.js:535
(anonymous) @ recaptcha__en.js:506
(anonymous) @ recaptcha__en.js:38
J..I @ recaptcha__en.js:505
y.I @ recaptcha__en.js:571
I @ recaptcha__en.js:608
jW.render @ recaptcha__en.js:505
(anonymous) @ recaptcha__en.js:331
Hr @ recaptcha__en.js:563
(anonymous) @ recaptcha__en.js:620
(anonymous) @ anchor?ar=1&k=6Lec3H8dAAAAAJVfM221RSPdxVsDbe-y5beURVMN&co=aHR0cDovLzEyNy4wLjAuMTo4MDA3&hl=en&v=_7Co1fh8iT2hcjvquYJ_3zSP&size=normal&cb=73pd89kwukrh:183
recaptcha__en.js:120 [Violation] Added non-passive event listener to a scroll-blocking ‘touchstart’ event. Consider marking event handler as ‘passive’ to make the page more responsive. See https://www.chromestatus.com/feature/5745543795965952
توی کنسول
براش هرچی سرچ میکنم میگن از فلان کد استفاده کنید من می کنم هیچ اتفاقی نمیفته
امکانش هست راهش رو بهم بگید؟
سلام. از این کد استفاده کنید
(function () {
if (typeof EventTarget !== “undefined”) {
let func = EventTarget.prototype.addEventListener;
EventTarget.prototype.addEventListener = function (type, fn, capture) {
this.func = func;
if(typeof capture !== “boolean”){
capture = capture || {};
capture.passive = false;
}
this.func(type, fn, capture);
};
};
}());
با سلام خدمت شما آقای شفیعی این سایت یکی از بهترین سایت ها در زمینه یادگیری PHP است من خیلی وقت بود که دنبال کد کپچای گوگل بودم ولی هیچ جا پیدا نکردم با تشکر از شما
سلام. خیلی خوشحالیم که مفید واقع شده.
موفق و پیروز باشید.
سلام،میشه واسه سایتی که با localhostبالا میاد و دامنه و هاست نداره هم اضافه کر؟
سلام. تقریبا سه سال پیش بصورت پیش فرض این مورد از سمت گوگل فعال بود ولی الان باید بصورت دستی localhost را به دامنه های پشتیبانی کلید ایجاد شده از طریق کنسول ادمین و supported domain اضافه کنید.
موفق باشید.
سلام در این مورد میشه بیشتر توضیح بدید . من میخوام برای سایتی که روی localhost فعاله . چنین کاری انجام بدم
سلام. دسترس بودن دامنه مهم نیست شما فقط باید در هنگام ثبت نام کلید برای ریکپچا نام دامنه های خودتون رو وارد کنید بهتون کلید رو میده همین.
https://www.google.com/recaptcha/admin/create
سلام, عالی بود و کاربردی, ممنون از زحماتتون
سلام
من تو سایت https://* میخام لینک کوتاه درست کنم ولی سایتش از کد کپچا ورژن ۱ استفاده میکنه که غیر فعال شده
باید چیکار کنم ؟
راهی هست که مثلا از قسمت راست کلیک (Inspect Element) کد روتغییر بدیم ؟
یا هر راه دیگه ای که بشه دور زد یا یا یا
خواهشا جواب بدین خیلی گیرم
تشکر
سلام. خیر امکان دستکاری از سمت کاربر وجود ندارد و از یکی از بخش های تماس با مای سایت مورد نظر اطلاع بدید تا این مشکل که مربوط به وبسایت آن ها است حل بشه.
موفق باشید.
مشکل اینه که هیچ راه ارتباطی نداره این سایت
از بخش report Abuse ارسال کنید.
این قسمت که میگین کجاست ؟
و اگه میشه شما هم یبار ریپورت بدین که درخواست بیشتر بشه و درست کنن کد رو
بررسی شد اطلاعات تماس درستی برای این سایت وجود ندارد. از سایت های دیگر که سرویس مشابه ارایه می دن استفاده کنید.
موفق باشید.
چطور میتونم سایتی که دقیقا از این cms استفاده میمنه رو پیدا کنم ؟
چون امکانات سایتهای دیگه مثل این نیست
سلام. باید جستجو کنید. واقعا در مورد این سایت ها اطلاعی ندارم.