Google reCaptcha i CakePHP

W artykule przedstawiam integrację google reCaptcha z frameworkiem CakePHP. Najpierw musimy się zalogować na stronie. Otrzymasz swój site key oraz secret key. Zapisz je i zachowaj. Będą potrzebne podczas integracji. W sekcji head dodaj skrypt recaptchy.

<script src='https://www.google.com/recaptcha/api.js'></script>
Dodaj poniższy kod wewnątrz formularza, w którym chcesz użyć captchy. W atrybucie data-sitekey wpisz swój site key.
<div class="g-recaptcha" data-sitekey="twoj_site_key"></div>
Końcowym krokiem jest dodanie w kontrolerze kodu obsługującego reCaptchę. Należy pamiętać aby zamienić twoj_secret_key na swój secret key.
if(isset($this->request->data['g-recaptcha-response'])) {
	$captcha = $this->request->data['g-recaptcha-response'];
}
if(!$captcha) {
	$this->Session->setFlash(__('Weryfikacja captcha jest wymagana'), 'flash_error');
} else {
	$response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=twoj_secret_key&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']);
	$arr_resp = json_decode($response);
	if(empty($arr_resp)) {
		$this->Session->setFlash(__('Weryfikacja captcha jest niepoprawna'), 'flash_error');
	}
	if(!empty($arr_resp) && $arr_resp->success==false) {
		$this->Session->setFlash(__('Weryfikacja captcha jest niepoprawna'), 'flash_error');
	}
}