24 const ATTEMPTS_FILE = __DIR__ .
'/../../../temp/hcaptcha-attempts.json';
42 curl_setopt_array($curl, array(
43 CURLOPT_URL =>
'https://hcaptcha.com/siteverify',
44 CURLOPT_HEADER =>
false,
45 CURLOPT_RETURNTRANSFER =>
true,
46 CURLOPT_ENCODING =>
'',
47 CURLOPT_MAXREDIRS => 10,
49 CURLOPT_FOLLOWLOCATION =>
true,
50 CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
51 CURLOPT_SSL_VERIFYPEER =>
false,
52 CURLOPT_CUSTOMREQUEST =>
'POST',
53 CURLOPT_POSTFIELDS =>
'secret=' .
Env::$e->HCAPTCHA_SECRET .
'&response=' .
$response,
54 CURLOPT_HTTPHEADER => array(
55 'Content-Type: application/x-www-form-urlencoded'
58 $result = curl_exec($curl);
60 if ($result && json_decode($result)->success ===
true) {
73 if (
$_SERVER[
'REMOTE_ADDR'] ==
'127.0.0.1') {
76 if (!
Env::$e->HCAPTCHA_SECRET) {
80 file_exists(dirname(self::ATTEMPTS_FILE)) or mkdir(dirname(self::ATTEMPTS_FILE), 0755);
81 if (!file_exists(dirname(self::ATTEMPTS_FILE))) {
82 throw new \Error(
'Path does not create');
84 }
catch (\Throwable $th) {
87 $file = new \SplFileObject(self::ATTEMPTS_FILE,
'a+b');
88 $file->flock(LOCK_EX);
93 if ($time + self::ATTEMPTS_TIME <
time()) {
97 }, ARRAY_FILTER_USE_KEY);
100 $file->flock(LOCK_UN);
101 return self::ATTEMPTS_NUM - count(array_keys(
$data,
$_SERVER[
'REMOTE_ADDR'])) > 0;
110 file_exists(dirname(self::ATTEMPTS_FILE)) or mkdir(dirname(self::ATTEMPTS_FILE), 0755);
111 if (!file_exists(dirname(self::ATTEMPTS_FILE))) {
112 throw new \Error(
'Path does not create');
114 }
catch (\Throwable $th) {
117 $file = new \SplFileObject(self::ATTEMPTS_FILE,
'a+b');
118 $file->flock(LOCK_EX);
122 $data = array_filter(
$data,
function ($time) {
123 if ($time + self::ATTEMPTS_TIME <
time()) {
127 }, ARRAY_FILTER_USE_KEY);
131 $file->flock(LOCK_UN);
if($_POST['code']==file_get_contents($_SERVER['DOCUMENT_ROOT'] . $row->file)) $file
Hcaptcha класс отвечает за работу с hcaptcha.
Env класс управляющий, добавляющий или записывающий переменные среды
setcookie('FROM_UID', $uid, [ 'expires'=> time()+31536000, 'path'=> '/', 'domain'=> $_SERVER['HTTP_HOST'], 'secure'=> Wrong\Start\Env::$e->IS_SECURE, 'httponly'=> false, 'samesite'=> Wrong\Start\Env::$e->IS_SECURE ? 'None' :'Lax']) or setcookie('FROM_UID' time()+31536000
setcookie('FROM_UID', $uid, [ 'expires'=> time()+31536000, 'path'=> '/', 'domain'=> $_SERVER['HTTP_HOST'], 'secure'=> Wrong\Start\Env::$e->IS_SECURE, 'httponly'=> false, 'samesite'=> Wrong\Start\Env::$e->IS_SECURE ? 'None' :'Lax']) or setcookie('FROM_UID' $_SERVER['HTTP_HOST']
if(($dbh=Connect::getInstance(true) ->dbh) && $dbh->query("SHOW TABLES") ->fetchAll() && $dbh->query("SELECT COUNT(*) FROM `users`") ->fetchColumn()) if(!empty($_POST)) exit