38 define(
"RECAPTCHA_API_SERVER",
"http://www.google.com/recaptcha/api");
39 define(
"RECAPTCHA_API_SECURE_SERVER",
"https://www.google.com/recaptcha/api");
40 define(
"RECAPTCHA_VERIFY_SERVER",
"www.google.com");
49 foreach ( $data as $key => $value )
50 $req .= $key .
'=' . urlencode( stripslashes($value) ) .
'&';
53 $req=substr($req,0,strlen($req)-1);
71 $http_request =
"POST $path HTTP/1.0\r\n";
72 $http_request .=
"Host: $host\r\n";
73 $http_request .=
"Content-Type: application/x-www-form-urlencoded;\r\n";
74 $http_request .=
"Content-Length: " . strlen($req) .
"\r\n";
75 $http_request .=
"User-Agent: reCAPTCHA/PHP\r\n";
76 $http_request .=
"\r\n";
77 $http_request .= $req;
80 if(
false == ( $fs = @fsockopen($host, $port, $errno, $errstr, 10) ) ) {
81 die (
'Could not open socket');
84 fwrite($fs, $http_request);
108 if ($pubkey == null || $pubkey ==
'') {
109 die (
"To use reCAPTCHA you must get an API key from <a href='https://www.google.com/recaptcha/admin/create'>https://www.google.com/recaptcha/admin/create</a>");
120 $errorpart =
"&error=" .
$error;
122 return '<script type="text/javascript" src="'. $server .
'/challenge?k=' . $pubkey . $errorpart .
'"></script>
125 <iframe src="'. $server .
'/noscript?k=' . $pubkey . $errorpart .
'" height="300" width="500" frameborder="0"></iframe><br/>
126 <textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea>
127 <input type="hidden" name="recaptcha_response_field" value="manual_challenge"/>
154 if ($privkey == null || $privkey ==
'') {
155 die (
"To use reCAPTCHA you must get an API key from <a href='https://www.google.com/recaptcha/admin/create'>https://www.google.com/recaptcha/admin/create</a>");
158 if ($remoteip == null || $remoteip ==
'') {
159 die (
"For security reasons, you must pass the remote ip to reCAPTCHA");
165 if ($challenge == null || strlen($challenge) == 0 ||
$response == null || strlen(
$response) == 0) {
167 $recaptcha_response->is_valid =
false;
168 $recaptcha_response->error =
'incorrect-captcha-sol';
169 return $recaptcha_response;
174 'privatekey' => $privkey,
175 'remoteip' => $remoteip,
176 'challenge' => $challenge,
181 $answers = explode (
"\n",
$response [1]);
184 if (trim ($answers [0]) ==
'true') {
185 $recaptcha_response->is_valid =
true;
188 $recaptcha_response->is_valid =
false;
189 $recaptcha_response->error = $answers [1];
191 return $recaptcha_response;
203 return "https://www.google.com/recaptcha/admin/create?" .
_recaptcha_qsencode (array (
'domains' => $domain,
'app' => $appname));
208 $numpad = $block_size - (strlen ($val) % $block_size);
209 return str_pad($val, strlen ($val) + $numpad, chr($numpad));
215 if (! function_exists (
"mcrypt_encrypt")) {
216 die (
"To use reCAPTCHA Mailhide, you need to have the mcrypt php module installed.");
218 $mode=MCRYPT_MODE_CBC;
219 $enc=MCRYPT_RIJNDAEL_128;
221 return mcrypt_encrypt($enc, $ky, $val, $mode,
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0");
226 return strtr(base64_encode ($x),
'+/',
'-_');
231 if ($pubkey ==
'' || $pubkey == null || $privkey ==
"" || $privkey == null) {
232 die (
"To use reCAPTCHA Mailhide, you have to sign up for a public and private key, " .
233 "you can do so at <a href='http://www.google.com/recaptcha/mailhide/apikey'>http://www.google.com/recaptcha/mailhide/apikey</a>");
237 $ky = pack(
'H*', $privkey);
249 $arr = preg_split(
"/@/",
$email );
251 if (strlen ($arr[0]) <= 4) {
252 $arr[0] = substr ($arr[0], 0, 1);
253 }
else if (strlen ($arr[0]) <= 6) {
254 $arr[0] = substr ($arr[0], 0, 3);
256 $arr[0] = substr ($arr[0], 0, 4);
271 return htmlentities($emailparts[0]) .
"<a href='" . htmlentities (
$url) .
272 "' onclick=\"window.open('" . htmlentities (
$url) .
"', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=300'); return false;\" title=\"Reveal this e-mail address\">...</a>@" . htmlentities ($emailparts [1]);