How to add google recaptcha on login form in cakephp
(1)First register your domain and create site key and secret key here
(2)Open file app/Config/bootstrap.php and add following setting
<?php Configure::write('google_recatpcha_settings', array( 'site_key'=>'your-domain-site-key', 'secret_key'=>'your-domain-secret-key' )); ?>
(3)add following script in your layout file app/View/Layouts/default.ctp
<script src='https://www.google.com/recaptcha/api.js'></script>
(4)Open app/View/Users/login.ctp and add following html inside login form
<div class="g-recaptcha" data-sitekey="<?php echo Configure::read('google_recatpcha_settings.site_key'); ?>"></div>
(5)add following function in app/Controller/AppController.php
<?php public function verifyRecatpcha($aData) { if(!$aData) { return true; } $recaptcha_secret = Configure::read('google_recatpcha_settings.secret_key'); $url = "https://www.google.com/recaptcha/api/siteverify?secret=".$recaptcha_secret."&response=".$aData['g-recaptcha-response']; $response = json_decode(@file_get_contents($url)); if($response->success == true) { return true; } else { return false; } } ?>
(6)Open file app/Controller/UsersController.php and add following code in login function after post values
<?php if(!$this->verifyRecatpcha($this->request->data)) { $this->Session->setFlash(__('Captcha incorrect.'),'default',array('class' => '')); return $this->redirect('login'); } ?>