Span protect করার জন্য Google reCaptcha অনেক ভাল একটি মাধ্যম এবং এটি ব্যাপকভাবে ব্যবহৃত হচ্ছে।
আপনি চাইলে আপনার Login Form, Contact Form সহ যে কোন Form এ reCaptcha ব্যবহার করতে পারেন এটি Google এর একটি Service.
reCaptcha আপনার Form এ একটি Required field হিসাবে থাকবে, যেটিকে পূরণ করা ছাড়া আপনি form টি submit করতে পারবেন না।

আমি এখানে এই ধরনের একটি login form দিয়ে উদাহরণ দেয়ার চেষ্টা করবো।

reCaptcha ব্যবহার করার জন্য প্রথমে আপনার Site টি register করে নিতে হবে, এর জন্য প্রথমে Google reCAPTCHA তে যান সেখানে নিচের ছবিটির মত একটি ফর্ম দেখতে পাবেন, ফর্মটি সঠিক ভাবে পুরন করুন এবং Register বাটনটিতে click করুন।

ফর্মটি সঠিক ভাবে পুরন করলে আপনি নিচের মত দেখতে একটি পেইজে চলে যাবেন, সেখানে আপনার Site key এবং Secret key দেখতে পাবেন।

এখন reCAPTCHA ফর্মটি আপনার সাইটে ব্যবহার করার জন্য দুই ধরনের integration করতে হবে একটি Client side এবং অপরটি Server side, আমরা প্রথমে Client side integration টি করবো।

Client side integration ট্যাব টিতে লক্ষ্য করলে নিচের ছবিটির মত দেখতে পাবেন।

এখান থেকে script ট্যাগ টি copy করে head ট্যাগ close হওয়ার আগে paste করুন এবং div ট্যাগ টি copy করে form ট্যাগ এর ভিতরে যেখানে Show করাতে চান সেখানে paste করুন তাহলেই আপনার Client side integration এর কাজ শেষ এবং reCAPTCHA ফর্মটি নিচের ছবির মত দেখতে পাবেন।

Server side integration এর জন্য আমি validation.php নামে একটি file বানালাম যেটি আমার login পেইজের সাথে require করা রয়েছে, সেখানে আমি $_POST variable থেকে ফর্মটি access করবো।

if(isset($_POST['login_submit'])){
	
	if(empty($_POST['username']) || empty($_POST['password'])){
		$errors['username'] = 'Please fill up all the fields correctly.';
	}

	if(empty($_POST['g-recaptcha-response'])){
		$errors['recaptcha'] = 'Captcha field is required.';
	}
}

প্রথমে আমি সবগুলি field কে required validation করে নিলাম, এখন Captcha field টিকে validation করবো, এর জন্য একটি function validate_recaptcha() বানাই কারন আমাদের google recaptcha server a HTTP request এটিকে validate করতে হবে।

function validate_recaptcha(){
	$post_data = http_build_query(
	    array(
	        'secret' => '6Le9LjcUAAAAAF2pCxp2DO-yTfJRzIdZj6YVmV9o',
	        'response' => $_POST['g-recaptcha-response'],
	        'remoteip' => $_SERVER['REMOTE_ADDR']
	    )
	);

	$opts = array('http' =>
	    array(
	        'method'  => 'POST',
	        'header'  => 'Content-type: application/x-www-form-urlencoded',
	        'content' => $post_data
	    )
	);
	
	$context  = stream_context_create($opts);
	$response = file_get_contents('https://www.google.com/recaptcha/api/siteverify', false, $context);
	$result = json_decode($response);
	
	if(empty($result->success)){
	    return false;
	}else{
		return true;
	}
}

এখানে আমার secret কী টি পরিবর্তন করে আপনার টি ব্যবহার করুন, না হয় validation হবে না। এই function টিকে নিচের মত করে required validation এর নিচে বসাই তাহলেই আমাদের কাজ সম্পন্ন হয়ে যাবে।

if(empty($errors)){
	$is_correct = validate_recaptcha();
	if($is_correct !== true){
		$errors['recaptcha'] = 'Please fill up the captcha correctly.';
	}
}

এখন আমরা চাইলে এই ধরনের একটি condition দিয়ে validation পরবর্তী code লিখতে পারি।

if(empty($errors)){
	$success = true;
}

আরও জানতে গুগল এর Official Developer’s Guide দেখতে পারেন।

Source file download করুন GitHub থেকে।

কোন ভুল হয়ে থাকলে অবশ্যই ধরিয়ে দিবেন।
কষ্ট করে পড়ার জন্য ধন্যবাদ।