diff --git a/_incl_data/class/Captcha/Captcha.php b/_incl_data/class/Captcha/Captcha.php
new file mode 100644
index 00000000..eba19552
--- /dev/null
+++ b/_incl_data/class/Captcha/Captcha.php
@@ -0,0 +1,81 @@
+width = max($width, 1);
+ return $this;
+ }
+
+ public function height(int $height): Captcha
+ {
+ $this->height = max($height, 1);
+ return $this;
+ }
+
+ public function newImage()
+ {
+ if ($this->width < 1 || $this->height < 1) {
+ return;
+ }
+
+ $img = imagecreatetruecolor($this->width, $this->height) or die('Cannot create image'); // создаем картинку
+ imagefill($img, 0, 0, 0x616161); // заполняем фон картинки
+ $x = -20;
+ $i = 1;
+ $sum = "";
+ $colorRGB = rand(180, 200); //цвет текста
+ while ($i++ <= 5000) {
+ imageSetPixel($img, rand(0, 105), rand(0, 24), 0x515151);
+ }
+
+ //рисуем 2 линии
+ imageLine($img, rand(0, 10), rand(0, 50), rand(95, 105), rand(0, 26), 0x909090);
+ imageLine($img, rand(0, 10), rand(0, 50), rand(95, 105), rand(0, 26), 0x909090);
+ //рамка
+ imageRectangle($img, 0, 0, 105, 24, 0x343434);
+
+ $fonts = [
+ 'fonts/FRSCRIPT.ttf',
+ 'fonts/CHILLER.ttf',
+ 'fonts/Bradley Hand ITC.ttf',
+ 'fonts/de_Manu_2_Regular.ttf',
+ 'fonts/Edgar_da_cool_Regular.ttf',
+ 'fonts/Hurryup_Hurryup.ttf',
+ 'fonts/Fh_Script_Regular.ttf',
+ 'fonts/Gabo4_Gabo4.ttf',
+ 'fonts/JAMI_Regular.ttf',
+ 'fonts/Justy1_Regular.ttf',
+ ];
+ $font = '../' . $fonts[rand(0, sizeof($fonts) - 1)];
+
+ $i = 1;
+ while ($i++ <= 4) { // выводим одну цифру за один проход цикла
+ imagettftext($img, 15, 0, $x = $x + 25, 20, imagecolorallocate($img, $colorRGB, $colorRGB, $colorRGB), $font, $rnd = mt_rand(0, 9)); // выводим текст поверх картинки
+ $sum = $sum . $rnd; // Собираем в одну строку все символы на картинке
+ }
+
+ ob_start();
+ imagepng($img); // выводим готовую картинку в формате PNG
+ $imgData = ob_get_clean();
+ imagedestroy($img); // освобождаем память, выделенную для картинки
+
+ echo ' ';
+ $this->sum = $sum;
+ }
+
+ /**
+ * @return string
+ */
+ public function getSum(): string
+ {
+ return $this->sum;
+ }
+}
\ No newline at end of file
diff --git a/fonts/BK2.ttf b/_incl_data/class/Captcha/fonts/BK2.ttf
similarity index 100%
rename from fonts/BK2.ttf
rename to _incl_data/class/Captcha/fonts/BK2.ttf
diff --git a/fonts/Bradley Hand ITC.ttf b/_incl_data/class/Captcha/fonts/Bradley Hand ITC.ttf
similarity index 100%
rename from fonts/Bradley Hand ITC.ttf
rename to _incl_data/class/Captcha/fonts/Bradley Hand ITC.ttf
diff --git a/fonts/CHILLER.ttf b/_incl_data/class/Captcha/fonts/CHILLER.ttf
similarity index 100%
rename from fonts/CHILLER.ttf
rename to _incl_data/class/Captcha/fonts/CHILLER.ttf
diff --git a/fonts/Edgar_da_cool_Regular.ttf b/_incl_data/class/Captcha/fonts/Edgar_da_cool_Regular.ttf
similarity index 100%
rename from fonts/Edgar_da_cool_Regular.ttf
rename to _incl_data/class/Captcha/fonts/Edgar_da_cool_Regular.ttf
diff --git a/fonts/FRSCRIPT.ttf b/_incl_data/class/Captcha/fonts/FRSCRIPT.ttf
similarity index 100%
rename from fonts/FRSCRIPT.ttf
rename to _incl_data/class/Captcha/fonts/FRSCRIPT.ttf
diff --git a/fonts/Fh_Script_Regular.ttf b/_incl_data/class/Captcha/fonts/Fh_Script_Regular.ttf
similarity index 100%
rename from fonts/Fh_Script_Regular.ttf
rename to _incl_data/class/Captcha/fonts/Fh_Script_Regular.ttf
diff --git a/fonts/Gabo4_Gabo4.ttf b/_incl_data/class/Captcha/fonts/Gabo4_Gabo4.ttf
similarity index 100%
rename from fonts/Gabo4_Gabo4.ttf
rename to _incl_data/class/Captcha/fonts/Gabo4_Gabo4.ttf
diff --git a/fonts/GothicRus.ttf b/_incl_data/class/Captcha/fonts/GothicRus.ttf
similarity index 100%
rename from fonts/GothicRus.ttf
rename to _incl_data/class/Captcha/fonts/GothicRus.ttf
diff --git a/fonts/Hurryup_Hurryup.ttf b/_incl_data/class/Captcha/fonts/Hurryup_Hurryup.ttf
similarity index 100%
rename from fonts/Hurryup_Hurryup.ttf
rename to _incl_data/class/Captcha/fonts/Hurryup_Hurryup.ttf
diff --git a/fonts/JAMI_Regular.ttf b/_incl_data/class/Captcha/fonts/JAMI_Regular.ttf
similarity index 100%
rename from fonts/JAMI_Regular.ttf
rename to _incl_data/class/Captcha/fonts/JAMI_Regular.ttf
diff --git a/fonts/Justy1_Regular.ttf b/_incl_data/class/Captcha/fonts/Justy1_Regular.ttf
similarity index 100%
rename from fonts/Justy1_Regular.ttf
rename to _incl_data/class/Captcha/fonts/Justy1_Regular.ttf
diff --git a/fonts/de_Manu_2_Regular.ttf b/_incl_data/class/Captcha/fonts/de_Manu_2_Regular.ttf
similarity index 100%
rename from fonts/de_Manu_2_Regular.ttf
rename to _incl_data/class/Captcha/fonts/de_Manu_2_Regular.ttf
diff --git a/_incl_data/class/FightRequest.php b/_incl_data/class/FightRequest.php
index 2a8f06da..9eea8be1 100644
--- a/_incl_data/class/FightRequest.php
+++ b/_incl_data/class/FightRequest.php
@@ -1197,14 +1197,17 @@ class FightRequest
HTML;
if ($r === self::BATTLE_RAZDEL_CHAOTIC) {
- if (!$this->u->info['no_zv_key']): ?>
+ if (!$this->u->info['no_zv_key']):
+ $security = new Captcha\Captcha();
+ ?>
-
diff --git a/buttons.php b/buttons.php
index 5c488dcf..ab977d8e 100644
--- a/buttons.php
+++ b/buttons.php
@@ -2,6 +2,7 @@
/* Главный игровой файл. */
+use Captcha\Captcha;
use Core\Config;
use Core\Database;
use Core\Db;
@@ -26,33 +27,42 @@ function er($e)
exit($err);
}
+function gameexit()
+{
+ setcookie('login', '', 0, '', Config::get('host'));
+ setcookie('login', '', 0);
+ setcookie('auth', '', 0);
+ Db::sql('update users set online = unix_timestamp() - 420 where id = ?', [$u->info['id']]);
+ exit(Config::get('exit'));
+}
+
Database::init();
define('IP', UserIp::get());
$u = User::start();
+
+if (empty($u->info)) {
+ exit(Config::get('exit'));
+}
+
$filter = new Filter();
$chat = new Chat();
-
$userclan = new Clan($u->info);
ini_set('max_execution_time', '120');
if (isset($_GET['showcode'])) {
- include_once 'show_reg_img/security.php';
- die();
+ $security = new Captcha();
+ $security->width(107)->height(26)->newImage();
+ $_SESSION['code'] = $security->getSum();
+ exit();
}
if (isset($u->info['joinIP']) && $u->info['joinIP'] == 1 && $u->info['ip'] != IP) {
er('#Пожалуйста авторизируйтесь с главной страницы');
} elseif (isset($_GET['exit'])) {
- setcookie('login', '', 0, '', Config::get('host'));
- setcookie('login', '', 0);
- setcookie('auth', '', 0);
- Db::sql('update users set online = unix_timestamp() - 420 where id = ?', [$u->info['id']]);
- die(Config::get('exit'));
-} elseif (!isset($u->info['id'])) {
- er('Возникла проблема с определением id персонажа
Авторизируйтесь с главной страницы.');
+ gameexit();
}
if ($u->info['online'] < time() - 60) {
diff --git a/js/gameEngine.js b/js/gameEngine.js
index abaca8ef..1b81e5f4 100644
--- a/js/gameEngine.js
+++ b/js/gameEngine.js
@@ -1,4 +1,4 @@
-const sml = new Array("p001", 18, 18, "p002", 15, 15, "p003", 22, 15, "p004", 15, 15, "p005", 20, 20, "p006", 31, 28, "p007", 15, 15,
+const sml = ["p001", 18, 18, "p002", 15, 15, "p003", 22, 15, "p004", 15, 15, "p005", 20, 20, "p006", 31, 28, "p007", 15, 15,
"p008", 21, 22, "p009", 28, 24, "p010", 28, 21, "p011", 62, 28, "p012", 15, 21, "p013", 15, 19, "p014", 15, 15, "p015", 16, 16, "p016", 15, 15,
"p017", 21, 15, "p018", 15, 21, "p019", 42, 23, "p020", 26, 25, "p021", 25, 27, "p022", 26, 26, "p023", 26, 27, "p024", 27, 22, "p025", 26, 28,
"p026", 15, 15, "p027", 19, 17, "p028", 15, 18, "p029", 15, 15, "p030", 49, 18, "p031", 37, 15,
@@ -17,7 +17,7 @@ const sml = new Array("p001", 18, 18, "p002", 15, 15, "p003", 22, 15, "p004", 15
"p102", 31, 36, "p103", 30, 35, "p104", 32, 32, "p105", 45, 45, "p106", 50, 35, "p107", 45, 41,
"p108", 31, 27, "p109", 44, 30, "p110", 29, 20, "p111", 29, 27, "p112", 29, 20, "p113", 29, 20, "p114", 51, 24,
"p115", 43, 35, "p116", 45, 23, "p117", 36, 24, "p118", 51, 35, "p119", 41, 31, "p120", 29, 29,
- "p121", 32, 26, "p122", 40, 25, "p123", 37, 22, "p124", 40, 36, "p125", 38, 33, "p126", 23, 23, "p127", 33, 24, "p128", 30, 20);
+ "p121", 32, 26, "p122", 40, 25, "p123", 37, 22, "p124", 40, 36, "p125", 38, 33, "p126", 23, 23, "p127", 33, 24, "p128", 30, 20];
let cb_id = 1,
cb_date = {},
@@ -105,17 +105,6 @@ function anrenameGo(id, val) {
getUrl('main', `main.php?newanimal&rename=${id}&vvv=${val}`);
}
-
-//Каптча на действия
-// 5
-function captcha(title, act) {
- win.add('captcha', `${title} `, '
Укажите код с картинки: ', {
- 'a1': `captchatext1($(\'#captchatext1\').val(),\'${act}\')`,
- 'usewin': '$(\'#captchatext1\').focus()',
- 'd': ''
- }, 3, 1, 'min-width:230px;');
-}
-
// 6
function captchatext1(val, act) {
getUrl('main', `${act}&cptch1=${val}`);
diff --git a/modules_data/_zv.php b/modules_data/_zv.php
index 3b9199e8..312f9fd4 100644
--- a/modules_data/_zv.php
+++ b/modules_data/_zv.php
@@ -463,13 +463,16 @@ if ($zv->error) {
Бой без правил
(проигравшая сторона получает инвалидность)
+ style="color: #777; ">(проигравшая сторона получает инвалидность)
Закрытый поединок
(бой будет изолирован от нападений)
Запрет на использование свитков восстановления НР и Маны
- info['no_zv_key']): ?>
-
- Код подтверждения:
'
+ info['no_zv_key']):
+ $security = new Captcha\Captcha();
+ $security->width(70)->height(20)->newImage();
+ $_SESSION['code'] = $security->getSum();
+ ?>
+ Код подтверждения:
diff --git a/show_reg_img/security.php b/show_reg_img/security.php
deleted file mode 100644
index c10206f0..00000000
--- a/show_reg_img/security.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
\ No newline at end of file
diff --git a/show_reg_img/security3.php b/show_reg_img/security3.php
deleted file mode 100644
index 93ac5256..00000000
--- a/show_reg_img/security3.php
+++ /dev/null
@@ -1,48 +0,0 @@
-
\ No newline at end of file
diff --git a/support/captcha.class.php b/support/captcha.class.php
deleted file mode 100644
index ff930adf..00000000
--- a/support/captcha.class.php
+++ /dev/null
@@ -1,36 +0,0 @@
-keystring=array();
-
- for($i=0;$i < $this->length;$i++){
- $this->keystring[] .= mt_rand(0,9);
- }
-
- }
-
-
- public function draw(){
- $img = '';
- foreach($this->keystring as $keystring){
- $img .= '
';
- }
-
- return $img;
- }
-
-
- public function getKeyString(){
- return implode($this->keystring);
- }
-
-}
-
-?>
\ No newline at end of file
diff --git a/support/captcha.php b/support/captcha.php
deleted file mode 100644
index 3669101d..00000000
--- a/support/captcha.php
+++ /dev/null
@@ -1,11 +0,0 @@
-getKeyString();
-
-echo $captcha->draw();
-
-?>
\ No newline at end of file
diff --git a/support/images/0.gif b/support/images/0.gif
deleted file mode 100644
index db1488b6..00000000
Binary files a/support/images/0.gif and /dev/null differ
diff --git a/support/images/1.gif b/support/images/1.gif
deleted file mode 100644
index 3064269e..00000000
Binary files a/support/images/1.gif and /dev/null differ
diff --git a/support/images/2.gif b/support/images/2.gif
deleted file mode 100644
index 62b6f531..00000000
Binary files a/support/images/2.gif and /dev/null differ
diff --git a/support/images/3.gif b/support/images/3.gif
deleted file mode 100644
index 73f182bb..00000000
Binary files a/support/images/3.gif and /dev/null differ
diff --git a/support/images/4.gif b/support/images/4.gif
deleted file mode 100644
index bde657e4..00000000
Binary files a/support/images/4.gif and /dev/null differ
diff --git a/support/images/5.gif b/support/images/5.gif
deleted file mode 100644
index a9ce8b7a..00000000
Binary files a/support/images/5.gif and /dev/null differ
diff --git a/support/images/6.gif b/support/images/6.gif
deleted file mode 100644
index b1552e77..00000000
Binary files a/support/images/6.gif and /dev/null differ
diff --git a/support/images/7.gif b/support/images/7.gif
deleted file mode 100644
index 0cf419ac..00000000
Binary files a/support/images/7.gif and /dev/null differ
diff --git a/support/images/8.gif b/support/images/8.gif
deleted file mode 100644
index c7c6a00b..00000000
Binary files a/support/images/8.gif and /dev/null differ
diff --git a/support/images/9.gif b/support/images/9.gif
deleted file mode 100644
index 552c2719..00000000
Binary files a/support/images/9.gif and /dev/null differ
diff --git a/support/images/bgbtn.jpg b/support/images/bgbtn.jpg
deleted file mode 100644
index e95c2c18..00000000
Binary files a/support/images/bgbtn.jpg and /dev/null differ
diff --git a/support/images/bginput.jpg b/support/images/bginput.jpg
deleted file mode 100644
index 8e710983..00000000
Binary files a/support/images/bginput.jpg and /dev/null differ
diff --git a/support/index.php b/support/index.php
index a4143fe3..8d4a519e 100644
--- a/support/index.php
+++ b/support/index.php
@@ -1,302 +1,304 @@
-set_error_delimiters('
', '
');
+$security = new Captcha();
+
//Задаем правила валидации
-$rules = array(
- array(
- 'field' => 'user_name',
- 'label' => 'Ваше ник в игре',
- 'rules' => array(
- 'trim' => '', //Обрезаем пробелы по бокам
- 'strip_tags' => '', // Удаляем HTML и PHP теги
- 'required' => 'Поле %s обязательно для заполнения'
- )
- ),
- array(
- 'field' => 'user_email',
- 'label' => 'Ваш e-mail адрес связанный с ником',
- 'rules' => array(
- 'trim' => '',
- 'required' => 'Поле %s обязательно для заполнения',
- 'valid_email' => 'Поле %s должно содержать правильный email-адрес'
- )
- ),
- array(
- 'field' => 'user_url',
- 'label' => 'URL info персонажа',
- 'rules' => array(
- 'trim' => '',
- 'valid_url' => 'Поле %s должно содержать правильный URL адрес'
- )
- ),
- array(
- 'field' => 'subject',
- 'label' => 'Тема обращения',
- 'rules' => array(
- 'trim' => '', //Обрезаем пробелы по бокам
- 'strip_tags' => '', // Удаляем HTML и PHP теги
- 'required' => 'Поле %s обязательно для заполнения'
- )
- ),
- array(
- 'field' => 'text',
- 'label' => 'Суть проблемы/обращения',
- 'rules' => array(
- 'trim' => '', //Обрезаем пробелы по бокам
- 'strip_tags' => '', // Удаляем HTML и PHP теги
- 'required' => 'Поле %s обязательно для заполнения'
- )
- ),
- array(
- 'field' => 'keystring',
- 'label' => 'Капча',
- 'rules' => array(
- 'trim' => '', //Обрезаем пробелы по бокам
- 'required' => 'Вы не ввели цифры изображенные на картинке',
- 'valid_captcha[keystring]' => 'Вы ввели не правильный цифры с картинки'
- )
- )
-);
+$rules = [
+ [
+ 'field' => 'user_name',
+ 'label' => 'Ваше ник в игре',
+ 'rules' => [
+ 'trim' => '', //Обрезаем пробелы по бокам
+ 'strip_tags' => '', // Удаляем HTML и PHP теги
+ 'required' => 'Поле %s обязательно для заполнения',
+ ],
+ ],
+ [
+ 'field' => 'user_email',
+ 'label' => 'Ваш e-mail адрес связанный с ником',
+ 'rules' => [
+ 'trim' => '',
+ 'required' => 'Поле %s обязательно для заполнения',
+ 'valid_email' => 'Поле %s должно содержать правильный email-адрес',
+ ],
+ ],
+ [
+ 'field' => 'user_url',
+ 'label' => 'URL info персонажа',
+ 'rules' => [
+ 'trim' => '',
+ 'valid_url' => 'Поле %s должно содержать правильный URL адрес',
+ ],
+ ],
+ [
+ 'field' => 'subject',
+ 'label' => 'Тема обращения',
+ 'rules' => [
+ 'trim' => '', //Обрезаем пробелы по бокам
+ 'strip_tags' => '', // Удаляем HTML и PHP теги
+ 'required' => 'Поле %s обязательно для заполнения',
+ ],
+ ],
+ [
+ 'field' => 'text',
+ 'label' => 'Суть проблемы/обращения',
+ 'rules' => [
+ 'trim' => '', //Обрезаем пробелы по бокам
+ 'strip_tags' => '', // Удаляем HTML и PHP теги
+ 'required' => 'Поле %s обязательно для заполнения',
+ ],
+ ],
+ [
+ 'field' => 'keystring',
+ 'label' => 'Капча',
+ 'rules' => [
+ 'trim' => '', //Обрезаем пробелы по бокам
+ 'required' => 'Вы не ввели цифры изображенные на картинке',
+ 'valid_captcha[keystring]' => 'Вы ввели не правильный цифры с картинки',
+ ],
+ ],
+];
//Устанавливаем правила валидации
$validator->set_rules($rules);
$message = '';
//Запускаем валидацию POST данных
-if($validator->run()){
-
- //Здесь впишите свой e-mail адрес
- //на негу будут приходить уведомления с формы
- $to = 'support@new-combats.com';
-
- $from = "=?UTF-8?b?" . base64_encode($validator->postdata('user_name')) . "?=";
- $subject = "=?UTF-8?b?" . base64_encode( $validator->postdata('subject') ) . "?=";
-
- $mail_body = "Поступил новый ответ от формы обратной связи.\r\nАвтор оставил такие данные:\r\n";
-
- //Формируем текст сообщения
- foreach($rules as $rule){
- if($rule['field'] == 'keystring') continue;
- $mail_body .= $rule['label'].': '.$validator->postdata($rule['field'])."\r\n";
- }
-
- $header = "MIME-Version: 1.0\n";
- $header .= "Content-Type: text/plain; charset=UTF-8\n";
- $header .= "From: ". $from . " <" . $validator->postdata('user_email'). ">";
+if ($validator->run()) {
+
+ //Здесь впишите свой e-mail адрес
+ //на негу будут приходить уведомления с формы
+ $to = 'support@new-combats.com';
+
+ $from = "=?UTF-8?b?" . base64_encode($validator->postdata('user_name')) . "?=";
+ $subject = "=?UTF-8?b?" . base64_encode($validator->postdata('subject')) . "?=";
+
+ $mail_body = "Поступил новый ответ от формы обратной связи.\r\nАвтор оставил такие данные:\r\n";
+
+ //Формируем текст сообщения
+ foreach ($rules as $rule) {
+ if ($rule['field'] == 'keystring') {
+ continue;
+ }
+ $mail_body .= $rule['label'] . ': ' . $validator->postdata($rule['field']) . "\r\n";
+ }
+
+ $header = "MIME-Version: 1.0\n";
+ $header .= "Content-Type: text/plain; charset=UTF-8\n";
+ $header .= "From: " . $from . " <" . $validator->postdata('user_email') . ">";
+
+ //Отправка сообщения
+ if (mail($to, $subject, $mail_body, $header)) {
+
+ $message = '
Ваше сообщение успешно отправлено!
';
+
+ //Очищаем форму обратной связи
+ $validator->reset_postdata();
+ } else {
+ $message = '
Ваше сообщение не отправлено!
';
+ }
+} else {
- //Отправка сообщения
- if(mail($to, $subject, $mail_body, $header)){
-
- $message = '
Ваше сообщение успешно отправлено!
';
-
- //Очищаем форму обратной связи
- $validator->reset_postdata();
- }
- else{
-
- $message = '
Ваше сообщение не отправлено!
';
- }
-}
-else{
-
//Получаем сообщения об ошибках в виде строки
- $message = $validator->get_string_errors();
-
+ $message = $validator->get_string_errors();
+
//Получаем сообщения об ошибках в виде массива
- $errors = $validator->get_array_errors();
-
+ $errors = $validator->get_array_errors();
}
-
?>
-
+
-
-
Форма обратной связи с Администрацией проекта «Бойцовский клуб»
+
+
Форма обратной связи с Администрацией проекта «Бойцовский клуб»
+
-
+ -->
+
-
Заполните контактную форму и мы свяжемся с вами в ближайшее время, чтобы сообщить об устранении неисправностей.
-
-
+
- =(!empty($message))? '
'.$message.'
': ''?>
-