support for Google reCAPTCHA
This commit is contained in:
parent
cb5f5bb3d2
commit
bcf888423b
|
@ -1368,4 +1368,30 @@ function unformatShortFormatToSeconds($text) {
|
|||
return $text;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates the Google reCAPTCHA input.
|
||||
*
|
||||
* @param String $secretKey secret key
|
||||
* @return boolean valid
|
||||
*/
|
||||
function validateReCAPTCHA($secretKey) {
|
||||
$url = 'https://www.google.com/recaptcha/api/siteverify';
|
||||
$vars = array('secret' => $secretKey, 'response' => $_POST['g-recaptcha-response']);
|
||||
$options = array(
|
||||
'http' => array(
|
||||
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
|
||||
'method' => 'POST',
|
||||
'content' => http_build_query($vars)
|
||||
)
|
||||
);
|
||||
$context = stream_context_create($options);
|
||||
$result = file_get_contents($url, false, $context);
|
||||
if ($result === FALSE) {
|
||||
logNewMessage(LOG_ERR, 'reCAPTCHA validation failed, invalid server response.');
|
||||
return false;
|
||||
}
|
||||
$responseJSON = json_decode($result);
|
||||
return $responseJSON->{'success'} === true;
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
|
@ -2999,6 +2999,55 @@ class htmlJavaScript extends htmlElement {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a Script element to integrate external JavaScript files.
|
||||
*
|
||||
* @package metaHTML
|
||||
*/
|
||||
class htmlScript extends htmlElement {
|
||||
|
||||
/** src value */
|
||||
private $src = null;
|
||||
/** is async */
|
||||
private $async = false;
|
||||
/** execute after page is parsed */
|
||||
private $defer = false;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param String $src script path
|
||||
* @param boolean $isAsync script will be executed while the page continues the parsing (default true)
|
||||
* @param boolean $isDeferred script is executed when the page has finished parsing (default true)
|
||||
*/
|
||||
function __construct($src, $isAsync = true, $isDeferred = true) {
|
||||
$this->src = $src;
|
||||
$this->async = $isAsync;
|
||||
$this->defer = $isDeferred;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints the HTML code for this element.
|
||||
*
|
||||
* @param string $module Name of account module
|
||||
* @param array $input List of meta-HTML elements
|
||||
* @param array $values List of values which override the defaults in $input (name => value)
|
||||
* @param boolean $restricted If true then no buttons will be displayed
|
||||
* @param integer $tabindex Start value of tabulator index for input fields
|
||||
* @param string $scope Account type
|
||||
* @return array List of input field names and their type (name => type)
|
||||
*/
|
||||
function generateHTML($module, $input, $values, $restricted, &$tabindex, $scope) {
|
||||
$return = array();
|
||||
$async = $this->async ? ' async' : '';
|
||||
$defer = $this->defer ? ' defer="defer"' : '';
|
||||
echo '<script src="' . $this->src . '"' . $async . $defer . '>';
|
||||
echo '</script>';
|
||||
return $return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets all given elements to the same width.
|
||||
*
|
||||
|
@ -3266,6 +3315,44 @@ class htmlAccordion extends htmlElement {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a Google reCAPTCHA element.
|
||||
*
|
||||
* @package metaHTML
|
||||
*/
|
||||
class htmlReCAPTCHA extends htmlElement {
|
||||
|
||||
/** site key */
|
||||
private $key = null;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param String $key site key
|
||||
*/
|
||||
function __construct($key) {
|
||||
$this->key = htmlspecialchars($key);
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints the HTML code for this element.
|
||||
*
|
||||
* @param string $module Name of account module
|
||||
* @param array $input List of meta-HTML elements
|
||||
* @param array $values List of values which override the defaults in $input (name => value)
|
||||
* @param boolean $restricted If true then no buttons will be displayed
|
||||
* @param integer $tabindex Start value of tabulator index for input fields
|
||||
* @param string $scope Account type
|
||||
* @return array List of input field names and their type (name => type)
|
||||
*/
|
||||
function generateHTML($module, $input, $values, $restricted, &$tabindex, $scope) {
|
||||
$script = new htmlScript('https://www.google.com/recaptcha/api.js');
|
||||
$script->generateHTML($module, $input, $values, $restricted, $tabindex, $scope);
|
||||
echo '<div class="g-recaptcha" data-sitekey="' . $this->key . '"></div>';
|
||||
return array();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Responsive row with 12 column layout.
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue