initial commit
This commit is contained in:
commit
1cc4bf3572
254 changed files with 63622 additions and 0 deletions
htdocs/libraries/Nibble-Forms/Nibble/NibbleForms/Field
|
@ -0,0 +1,88 @@
|
|||
<?php
|
||||
namespace Nibble\NibbleForms\Field;
|
||||
|
||||
use Nibble\NibbleForms\Field;
|
||||
|
||||
class Captcha extends Field
|
||||
{
|
||||
|
||||
public $error = array();
|
||||
protected $label;
|
||||
|
||||
public function __construct($label = 'Humanity Check')
|
||||
{
|
||||
$this->label = $label;
|
||||
}
|
||||
|
||||
public function returnField($form_name, $name, $value = '')
|
||||
{
|
||||
$field = <<<FIELD
|
||||
<script type="text/javascript"
|
||||
src="http://www.google.com/recaptcha/api/challenge?k=%1\$s">
|
||||
</script>
|
||||
<noscript>
|
||||
<iframe src="http://www.google.com/recaptcha/api/noscript?k=%1\$s"
|
||||
height="300" width="500" frameborder="0"></iframe><br>
|
||||
<textarea name="recaptcha_challenge_field" rows="3" cols="40">
|
||||
</textarea>
|
||||
<input type="hidden" name="{$form_name}[recaptcha_response_field]"
|
||||
value="manual_challenge">
|
||||
</noscript>
|
||||
FIELD;
|
||||
$class = !empty($this->error) ? ' class="error"' : '';
|
||||
|
||||
return array(
|
||||
'messages' => !empty($this->custom_error) && !empty($this->error) ? $this->custom_error : $this->error,
|
||||
'label' => $this->label == false ? false : sprintf('<label for="%s"%s>%s</label>', $name, $class, $this->label),
|
||||
'field' => sprintf($field, 'YOUR_PUBLIC_KEY'),
|
||||
'html' => $this->html
|
||||
);
|
||||
}
|
||||
|
||||
public function validate($val)
|
||||
{
|
||||
|
||||
$url = 'http://www.google.com/recaptcha/api/verify';
|
||||
$data = array(
|
||||
'privatekey' => urlencode('YOUR_PRIVATE_KEY'),
|
||||
'remoteip' => urlencode($_SERVER['REMOTE_ADDR']),
|
||||
'challenge' => urlencode($_REQUEST['recaptcha_challenge_field']),
|
||||
'response' => urlencode($_REQUEST['recaptcha_response_field']),
|
||||
);
|
||||
|
||||
$data_string = '';
|
||||
foreach ($data as $key => $val) {
|
||||
$data_string .= $key . '=' . $val . '&';
|
||||
}
|
||||
$data_string = rtrim($data_string, '&');
|
||||
|
||||
$host = 'www.google.com';
|
||||
$http_request = "POST /recaptcha/api/verify HTTP/1.0\r\n";
|
||||
$http_request .= "Host: $host\r\n";
|
||||
$http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n";
|
||||
$http_request .= "Content-Length: " . strlen($data_string) . "\r\n";
|
||||
$http_request .= "User-Agent: reCAPTCHA/PHP\r\n";
|
||||
$http_request .= "\r\n";
|
||||
$http_request .= $data_string;
|
||||
|
||||
$response = '';
|
||||
if (false == ( $fs = @fsockopen($host, 80, $errno, $errstr, 10) )) {
|
||||
die('Could not open socket');
|
||||
}
|
||||
|
||||
fwrite($fs, $http_request);
|
||||
|
||||
while (!feof($fs)) {
|
||||
$response .= fgets($fs, 1160); // One TCP-IP packet
|
||||
}
|
||||
fclose($fs);
|
||||
$response = explode("\r\n\r\n", $response);
|
||||
$response = explode("\n", $response[1]);
|
||||
if (!isset($response[0]) || $response[0] != 'true') {
|
||||
$this->error[] = 'You failed to prove you humanity';
|
||||
}
|
||||
//curl_close($ch);
|
||||
return empty($this->error) ? true : false;
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue