1. Для работы нужен класс curl, его можно взять тут: https://github.com/philsturgeon/codeigniter-curl , разместить его нужно тут: /application/libraries/Curl.php (просто один файл)
2. Регистрируемся в гугле, заходим в личный кабинет ReCaptcha в Google https://www.google.com/recaptcha/admin#list. И в этом личном кабинете добавляем сайт, на который встраиваем ReCaptcha. После добавления сайта вы получите 2-а ключа, которые нам нужны дальше, один public_key, другой secret_key.
3. Добавляем их в файл конфигурации: /application/config/config.php
1 2 3 4 5 6 7 |
/* |-------------------------------------------------------------------------- | Google recaptcha keys |-------------------------------------------------------------------------- */ $config['google_recaptcha_public_key'] = '6LetlU4UAAAAAFoHV874gR'; //код реально длинее $config['google_recaptcha_secret_key'] = '6LetlU4UAAAAAOArAk6kNE'; //код реально длинее |
3. в шаблоне в header-e добавляем скрипт подключения гугл-рекаптчи:
1 |
<script src='https://www.google.com/recaptcha/api.js'></script> |
4. в шаблоне в форме добавляем строку кода, где будет отображение каптчи:
5. где-то в своем контроллере, где есть проверка формы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
//в конструкторе добавляем подключение curl $this->load->library(array('ion_auth', 'form_validation', 'curl') ); //где-то в функции отображения + проверки формы: $recaptchaResponse = trim($this->input->post('g-recaptcha-response')); $userIp = $this->input->ip_address(); $secret = $this->config->item('google_recaptcha_secret_key'); $url = "https://www.google.com/recaptcha/api/siteverify?secret=" . $secret . "&response=" . $recaptchaResponse . "&remoteip=" . $userIp; $response = $this->curl->simple_get($url); $status = json_decode($response, true); if (!$status['success']) { // ... делаем что-то если каптча неправильная } else { // ... делаем что-то если каптча норм } //для отображения: $this->viewdata['recaptcha_public_key'] = $this->config->item('google_recaptcha_public_key'); $this->load->view($view, $this->viewdata); |