Вход Регистрация
Файл: app/core/classes/ReCaptcha.php
Строк: 132
<?php
/**
 * This is a PHP library that handles calling reCAPTCHA.
 *    - Documentation and latest version
 *          https://developers.google.com/recaptcha/docs/php
 *    - Get a reCAPTCHA API Key
 *          https://www.google.com/recaptcha/admin/create
 *    - Discussion group
 *          http://groups.google.com/group/recaptcha
 *
 * @copyright Copyright (c) 2014, Google Inc.
 * @link      http://www.google.com/recaptcha
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */
/**
 * A ReCaptchaResponse is returned from checkAnswer().
 */
class ReCaptchaResponse
{
    public 
$success;
    public 
$errorCodes;
}
class 
ReCaptcha
{
    private static 
$_signupUrl "https://www.google.com/recaptcha/admin";
    private static 
$_siteVerifyUrl =
        
"https://www.google.com/recaptcha/api/siteverify?";
    private 
$_secret;
    private static 
$_version "php_1.0";
    
/**
     * Constructor.
     *
     * @param string $secret shared secret between site and ReCAPTCHA server.
     */
    
function ReCaptcha($secret)
    {
        if (
$secret == null || $secret == "") {
            die(
"To use reCAPTCHA you must get an API key from <a href='"
                
self::$_signupUrl "'>" self::$_signupUrl "</a>");
        }
        
$this->_secret=$secret;
    }
    
/**
     * Encodes the given data into a query string format.
     *
     * @param array $data array of string elements to be encoded.
     *
     * @return string - encoded request.
     */
    
private function _encodeQS($data)
    {
        
$req "";
        foreach (
$data as $key => $value) {
            
$req .= $key '=' urlencode(stripslashes($value)) . '&';
        }
        
// Cut the last '&'
        
$req=substr($req0strlen($req)-1);
        return 
$req;
    }
    
/**
     * Submits an HTTP GET to a reCAPTCHA server.
     *
     * @param string $path url path to recaptcha server.
     * @param array  $data array of parameters to be sent.
     *
     * @return array response
     */
    
private function _submitHTTPGet($path$data)
    {
        
$req $this->_encodeQS($data);
        
$response file_get_contents($path $req);
        return 
$response;
    }
    
/**
     * Calls the reCAPTCHA siteverify API to verify whether the user passes
     * CAPTCHA test.
     *
     * @param string $remoteIp   IP address of end user.
     * @param string $response   response string from recaptcha verification.
     *
     * @return ReCaptchaResponse
     */
    
public function verifyResponse($remoteIp$response)
    {
        
// Discard empty solution submissions
        
if ($response == null || strlen($response) == 0) {
            
$recaptchaResponse = new ReCaptchaResponse();
            
$recaptchaResponse->success false;
            
$recaptchaResponse->errorCodes 'missing-input';
            return 
$recaptchaResponse;
        }
        
$getResponse $this->_submitHttpGet(
            
self::$_siteVerifyUrl,
            array (
                
'secret' => $this->_secret,
                
'remoteip' => $remoteIp,
                
'v' => self::$_version,
                
'response' => $response
            
)
        );
        
$answers json_decode($getResponsetrue);
        
$recaptchaResponse = new ReCaptchaResponse();
        if (
trim($answers ['success']) == true) {
            
$recaptchaResponse->success true;
        } else {
            
$recaptchaResponse->success false;
            
$recaptchaResponse->errorCodes $answers [error-codes];
        }
        return 
$recaptchaResponse;
    }
}
Онлайн: 2
Реклама