Subversion Repositories php_guestbook

Rev

Blame | Last modification | View Log | RSS feed

  1. <?php
  2. /**
  3.  * This is a PHP library that handles calling reCAPTCHA.
  4.  *
  5.  * @copyright Copyright (c) 2015, Google Inc.
  6.  * @link      http://www.google.com/recaptcha
  7.  *
  8.  * Permission is hereby granted, free of charge, to any person obtaining a copy
  9.  * of this software and associated documentation files (the "Software"), to deal
  10.  * in the Software without restriction, including without limitation the rights
  11.  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  12.  * copies of the Software, and to permit persons to whom the Software is
  13.  * furnished to do so, subject to the following conditions:
  14.  *
  15.  * The above copyright notice and this permission notice shall be included in
  16.  * all copies or substantial portions of the Software.
  17.  *
  18.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  19.  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  20.  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  21.  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  22.  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  23.  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  24.  * THE SOFTWARE.
  25.  */
  26.  
  27. namespace ReCaptcha;
  28.  
  29. /**
  30.  * Stores and formats the parameters for the request to the reCAPTCHA service.
  31.  */
  32. class RequestParameters
  33. {
  34.     /**
  35.      * Site secret.
  36.      * @var string
  37.      */
  38.     private $secret;
  39.  
  40.     /**
  41.      * Form response.
  42.      * @var string
  43.      */
  44.     private $response;
  45.  
  46.     /**
  47.      * Remote user's IP address.
  48.      * @var string
  49.      */
  50.     private $remoteIp;
  51.  
  52.     /**
  53.      * Client version.
  54.      * @var string
  55.      */
  56.     private $version;
  57.  
  58.     /**
  59.      * Initialise parameters.
  60.      *
  61.      * @param string $secret Site secret.
  62.      * @param string $response Value from g-captcha-response form field.
  63.      * @param string $remoteIp User's IP address.
  64.      * @param string $version Version of this client library.
  65.      */
  66.     public function __construct($secret, $response, $remoteIp = null, $version = null)
  67.     {
  68.         $this->secret = $secret;
  69.         $this->response = $response;
  70.         $this->remoteIp = $remoteIp;
  71.         $this->version = $version;
  72.     }
  73.  
  74.     /**
  75.      * Array representation.
  76.      *
  77.      * @return array Array formatted parameters.
  78.      */
  79.     public function toArray()
  80.     {
  81.         $params = array('secret' => $this->secret, 'response' => $this->response);
  82.  
  83.         if (!is_null($this->remoteIp)) {
  84.             $params['remoteip'] = $this->remoteIp;
  85.         }
  86.  
  87.         if (!is_null($this->version)) {
  88.             $params['version'] = $this->version;
  89.         }
  90.  
  91.         return $params;
  92.     }
  93.  
  94.     /**
  95.      * Query string representation for HTTP request.
  96.      *
  97.      * @return string Query string formatted parameters.
  98.      */
  99.     public function toQueryString()
  100.     {
  101.         return http_build_query($this->toArray(), '', '&');
  102.     }
  103. }
  104.