|
Server : Apache/2.4.18 (Ubuntu) System : Linux canvaswebdesign 3.13.0-71-generic #114-Ubuntu SMP Tue Dec 1 02:34:22 UTC 2015 x86_64 User : oppastar ( 1041) PHP Version : 7.0.33-0ubuntu0.16.04.15 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, Directory : /var/www/rabbithabit.com/public_html/application/libraries/ |
Upload File : |
<?php
/**
* CodeIgniter NO Captcha ReCAPTCHA a.k.a reCAPTCHA Version 2.0 library
*
* This library is based on official reCAPTCHA library for PHP
* https://github.com/google/ReCAPTCHA
*
*/
defined('BASEPATH') OR exit('No direct script access allowed');
class ReCaptcha {
private $signup_url = "https://www.google.com/recaptcha/admin";
private $_siteVerifyUrl = "https://www.google.com/recaptcha/api/siteverify?";
private $_secret, $_sitekey, $_lang;
private $_version = "php_1.0";
function __construct() {
$this->ci = & get_instance();
$this->ci->load->config('recaptcha', TRUE);
if ($this->ci->config->item('recaptcha_secretkey', 'recaptcha') == NULL || $this->ci->config->item('recaptcha_secretkey', 'recaptcha') == "") {
die("To use reCAPTCHA you must get an API key from <a href='"
. $this->signup_url . "'>" . $this->signup_url . "</a>");
}
if ($this->ci->config->item('recaptcha_sitekey', 'recaptcha') == NULL || $this->ci->config->item('recaptcha_sitekey', 'recaptcha') == "") {
die("To use reCAPTCHA you must get an API key from <a href='"
. $this->signup_url . "'>" . $this->signup_url . "</a>");
}
$this->_secret = $this->ci->config->item('recaptcha_secretkey', 'recaptcha');
$this->_sitekey = $this->ci->config->item('recaptcha_sitekey', 'recaptcha');
if ($this->ci->config->item('lang', 'recaptcha') == NULL || $this->ci->config->item('lang', 'recaptcha') == "") {
$this->_lang = 'en';
} else {
$this->_lang = $this->ci->config->item('lang', 'recaptcha');
}
}
/**
* Function to convert an array into query string
* @param array $data Array of params
* @return String query string of parameters
*/
private function _encodeQS($data) {
$req = "";
foreach ($data as $key => $value) {
$req .= $key . '=' . urlencode(stripslashes($value)) . '&';
}
return substr($req, 0, strlen($req) - 1);
}
/**
* HTTP GET to communicate with reCAPTCHA server
* @param string $path URL to GET
* @param array $data Array of params
* @return string JSON response from reCAPTCHA server
*/
private function _submitHTTPGet($path, $data) {
$req = $this->_encodeQS($data);
$response = file_get_contents($path . $req);
return $response;
}
/**
* Function for rendering reCAPTCHA widget into views
* Call this function in your view
* @return string embedded HTML
*/
public function render() {
$return = '<div class="g-recaptcha" data-sitekey="' . $this->_sitekey . '"></div>
<script src="https://www.google.com/recaptcha/api.js?hl=' . $this->_lang . '" async defer></script>';
return $return;
}
/**
* Function for verifying user's input
* @param string $response User's input
* @param string $remoteIp Remote IP you wish to send to reCAPTCHA, if NULL $this->input->ip_address() will be called
* @return array Array of response
*/
public function verifyResponse($response, $remoteIp = NULL) {
if ($response == null || strlen($response) == 0) {
// Empty user's input
$return = array(
'success' => FALSE,
'error_codes' => 'missing-input'
);
}
$getResponse = $this->_submitHttpGet(
$this->_siteVerifyUrl, array(
'secret' => $this->_secret,
'remoteip' => (!is_null($remoteIp)) ? $remoteIp : $this->ci->input->ip_address(),
'v' => $this->_version,
'response' => $response
)
);
$answers = json_decode($getResponse, TRUE);
if (trim($answers ['success']) == true) {
// Right captcha!
$return = array(
'success' => TRUE,
'error_codes' => ''
);
} else {
// Wrong captcha!
$return = array(
'success' => FALSE,
'error_codes' => $answers['error-codes']
);
}
return $return;
}
}