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 27namespace ReCaptcha; 28 29/** 30 * Stores and formats the parameters for the request to the reCAPTCHA service. 31 */ 32class 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